#!/bin/bash
jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}
这个bash脚本在ubuntu上给了我糟糕的替换错误。任何帮助都将不胜感激。
#!/bin/bash
jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}
这个bash脚本在ubuntu上给了我糟糕的替换错误。任何帮助都将不胜感激。
当前回答
在我的例子中(在ubuntu 18.04下),我混合了$(${}),工作正常:
BACKUPED_NB=$(ls ${HOST_BACKUP_DIR}*${CONTAINER_NAME}.backup.sql.gz | wc --lines)
完整的例子。
其他回答
我在bash中使用花括号在表达式中添加了两次美元符号:
cp -r $PROJECT_NAME ${$PROJECT_NAME}2
而不是
cp -r $PROJECT_NAME ${PROJECT_NAME}2
对于到达这里的其他命令,当使用env变量语法执行命令时,也会出现相同的消息,例如${which sh}而不是正确的$(which sh)
另外,确保脚本的第一行没有空字符串。
即确保#!/bin/bash是脚本的第一行。
我也有同样的问题。确保你的脚本没有
#!/bin/sh
在你的脚本顶部。相反,你应该补充
#!/bin/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