在bash if语句中使用通配符

时间:2013-10-14 05:33:47

标签: bash shell sh

我在bash shell中编写了以下代码。 它应该采用位置参数,如果它以短划线“ - ”开头,它应该输入错误信息。

但由于某种原因,if语句总是被跳过。它仅在我输入 - *

时才起作用

我觉得这个修补程序与“$”有关。

以下是代码片段:

    EXECNAME=$1
    if [ "$EXECNAME" = "-*" ]; then
           echo "error: invalid executable name"
    fi

2 个答案:

答案 0 :(得分:6)

您可以在BASH中使用双方括号[[]]而不使用匹配模式的引号支持:

[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name"

答案 1 :(得分:0)

为了匹配glob模式,我更喜欢使用case

case $EXECNAME in
  -*) echo "error: invalid executable name"
esac