【发布时间】:2014-11-03 23:55:05
【问题描述】:
我正在为一个 shell 脚本类做一些功课,并且有一个问题要求我编写一个脚本来测试输入的参数是否是一个有效的 shell 变量名。下面的脚本似乎工作正常。
if echo "$1" | grep -v ".*[^A-Za-z_]" > /dev/null
then
echo yes
else
echo no
fi
我知道括号是 BASH shell 中测试功能的简写。我的问题是,当我尝试使用方括号执行上述脚本时出现错误。
if [ echo "$1" | grep -v ".*[^A-Za-z_]" > /dev/null ]
这个问题(我相信)是 grep 试图使用 ] 作为其参数,因此在运行脚本时会导致错误。
什么情况下不需要括号?
【问题讨论】:
标签: linux bash if-statement grep brackets