我在脚本中有这样一行:
TATVAR=$(echo $PARAMVAR|sed -e 's/^[ \t]*//')
我想将其缩小为不执行其他程序(sed),shellcheck建议我应该使用:
${variable//search/replace}
我已经尝试了许多正则表达式,但似乎不起作用。有谁知道如何做到这一点?
您可以使用"${PARAMVAR//$'\t'/}"
,但是请注意,这是一项bash功能,因此其他shell可能不支持它。这意味着您要使用#!/bin/bash
而不是#!/bin/sh
(并且不要使用来运行脚本)来启动脚本sh scriptname
。
$ PARAMVAR=$'space: tab:\tlinefeed:\nend'
$ echo "$PARAMVAR"
space: tab: linefeed:
end
$ echo "${PARAMVAR//$'\t'/}"
space: tab:linefeed:
end
为了进行比较,using[[:blank:]]
也将消除空格:
$ echo "${PARAMVAR//[[:blank:]]/}"
space:tab:linefeed:
end
而且,您应该始终将变量引用括在双引号中,否则所有空白都将被视为断字(echo
然后将它们转换为空格):
$ echo $PARAMVAR
space: tab: linefeed: end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句