#!/bin/bash

jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}

这个bash脚本在ubuntu上给了我糟糕的替换错误。任何帮助都将不胜感激。


当前回答

两者- bash或dash -工作,但语法需要:

FILENAME=/my/complex/path/name.ext
NEWNAME=${FILENAME%ext}new

其他回答

我也有同样的问题。确保你的脚本没有

#!/bin/sh 

在你的脚本顶部。相反,你应该补充

#!/bin/bash

我发现这个问题要么是由标记的答案引起的,要么是在bash声明之前有一行或空格

两者- bash或dash -工作,但语法需要:

FILENAME=/my/complex/path/name.ext
NEWNAME=${FILENAME%ext}new

尝试使用bash命令显式地运行脚本,而不是将其作为可执行文件执行。

看起来“+x”会导致问题:

root@raspi1:~# cat > /tmp/btest
#!/bin/bash

jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}
root@raspi1:~# chmod +x /tmp/btest
root@raspi1:~# /tmp/btest
root@raspi1:~# sh -x /tmp/btest
+ jobname=job_201312161447_0003
/tmp/btest: 4: /tmp/btest: Bad substitution