测试表达式--用法消息

jak*_*ake 0 linux

我正在寻找带有用法消息的测试表达式。当我在命令行中输入一个诸如 ./file 之类的文件时,我需要脚本停止并回显错误。当我输入 ./file test 我需要运行文件并输入文件。我很难使用测试表达式消息。到目前为止,我已经有了这个,它有点像我想要的那样,但我需要检查并确保 ./file test 实际上是输入来输入文件的。如果它没有在命令中正确输入,它应该吐出一个错误并退出。

   if [$# -eq 0 ]
      then
           echo"error"
      exit 1
   fi
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

[是一个命令;[$#不是。您需要将命令与其参数分开:

if [ $# -eq 0 ]; then
    echo "error"   # Here, too
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您可以用特殊的参数扩展替换整个块:

: ${1?error}
Run Code Online (Sandbox Code Playgroud)

如果第一个位置参数未设置(即没有位置参数),则打印 ? 并退出。