3

我在 bash shell 中编写了以下代码。它应该采用位置参数,如果它以破折号“-”开头,则应该输入错误消息。

但由于某种原因,if 语句总是被跳过。仅当我按字面输入 -* 时它才会起作用

我的印象是修复与“$”有关。

这是代码片段:

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

2 回答 2

6

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

[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name"
于 2013-10-14T05:36:25.750 回答
0

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

case $EXECNAME in
  -*) echo "error: invalid executable name"
esac
于 2013-10-14T05:40:42.790 回答