我正在尝试从字符串中检索前5个字符,但是Bad substitution
在字符串操作行中不断出现错误,我的teststring.sh
脚本中包含以下几行:
TESTSTRINGONE="MOTEST"
NEWTESTSTRING=${TESTSTRINGONE:0:5}
echo ${NEWTESTSTRING}
我已经遍历了很多次语法,看不到我做错了什么
谢谢
Answers:
echo 'mystring' |cut -c1-5
是您的问题的替代解决方案。
更多关于unix cut程序
在这里工作:
$ TESTSTRINGONE="MOTEST"
$ NEWTESTSTRING=${TESTSTRINGONE:0:5}
$ echo ${NEWTESTSTRING}
MOTES
您正在使用什么外壳?
#!/bin/bash
或添加#!/bin/sh
到第一行?
.sh
或#!/bin/sh
激活Bash的“ POSIX遵从模式”。由于这种形式的字符串切片不是POSIX shell功能(它是Bash功能),因此会丢失。尝试明确设置上线#!/bin/bash
,没有 sh
。
sed
如果愿意,可以尝试-
[jaypal:~/Temp] TESTSTRINGONE="MOTEST"
[jaypal:~/Temp] sed 's/\(.\{5\}\).*/\1/' <<< "$TESTSTRINGONE"
MOTES
sed 's/\(.\{5\}\).*/\1/' <<<$TESTSTRINGONE
bash -version
或bash --version
通常)