Bash变量子项失败。我需要启用交换机吗?

Bash变量子项失败。我需要启用交换机吗?,bash,Bash,以下Bash脚本失败: DATA=fred echo ${DATA:1:1} 我希望它打印“r”,但我得到的只是一个“坏替换”错误 是否需要使用某种类型的开关来启用变量扩展语法 干杯不,但您必须确保它是由bash而不是其他shell运行的 bash script.sh 不,但是您必须确保它是由bash而不是其他shell运行的 bash script.sh 这不是一个很好的解决方案,但解决办法是: TEST=`echo "${DATA}" | sed -r 's|^.(.).*$|\1

以下Bash脚本失败:

DATA=fred
echo ${DATA:1:1}
我希望它打印“r”,但我得到的只是一个“坏替换”错误

是否需要使用某种类型的开关来启用变量扩展语法


干杯

不,但您必须确保它是由bash而不是其他shell运行的

bash script.sh


不,但是您必须确保它是由bash而不是其他shell运行的

bash script.sh


这不是一个很好的解决方案,但解决办法是:

TEST=`echo "${DATA}" | sed -r 's|^.(.).*$|\1|'`

感谢Ignacio的建议,这不是一个很好的解决方案,但解决办法是:

TEST=`echo "${DATA}" | sed -r 's|^.(.).*$|\1|'`
感谢您的建议Ignacio

echo${SHELL}打印“/bin/bash”,因此我认为它一定是正确的SHELL。还有几件事。首先,脚本是从另一个应用程序启动的,其次,我刚刚将操作系统从RedHat(它工作的地方)切换到Ubuntu(它失败的地方),echo${SHELL}prints“/bin/bash”,所以我认为它一定是正确的SHELL。还有几件事。首先,脚本是从另一个应用程序启动的,其次,我刚刚将操作系统从RedHat(它工作的地方)切换到Ubuntu(它失败的地方)