我在bash shell中编写了以下代码。 它应该采用位置参数,如果它以短划线“ - ”开头,它应该输入错误信息。
但由于某种原因,if语句总是被跳过。它仅在我输入 - *
时才起作用我觉得这个修补程序与“$”有关。
以下是代码片段:
EXECNAME=$1
if [ "$EXECNAME" = "-*" ]; then
echo "error: invalid executable name"
fi
答案 0 :(得分:6)
您可以在BASH中使用双方括号[[
和]]
而不使用匹配模式的引号支持:
[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name"
答案 1 :(得分:0)
为了匹配glob模式,我更喜欢使用case
:
case $EXECNAME in
-*) echo "error: invalid executable name"
esac