在bash if语句中使用通配符

Ram*_*uki 3 bash shell sh

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

但由于某种原因,if语句总是被跳过.它只有在字面上输入时才起作用 - *

我得到的印象是修复与"$"有关.

以下是代码片段:

    EXECNAME=$1
    if [ "$EXECNAME" = "-*" ]; then
           echo "error: invalid executable name"
    fi
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 6

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

[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name"
Run Code Online (Sandbox Code Playgroud)