Shell脚本包装器以防止运行没有参数的命令?

Use*_*ser 4 bash shell-script

例如xyz,如果我不带任何参数运行命令,我使用的程序会产生不良影响。所以我想防止自己不小心运行xyz不带参数的命令,但允许它带参数运行。

我如何编写一个 shell 脚本,以便在xyz不带参数的情况下调用时它会打印一条错误消息,否则将任何和所有参数传递给xyz程序?

cuo*_*glm 11

您可以检查特殊变量$#:

if [ $# -eq 0 ]; then
  echo "No arguments provided!"
  exit 1
fi
/usr/bin/xyz "$@"
Run Code Online (Sandbox Code Playgroud)

然后,为您的~/.bashrc;添加别名

alias xyz="/path/to/script.sh"
Run Code Online (Sandbox Code Playgroud)

现在,每次运行时xyz,都会启动别名。这将调用脚本,该脚本检查您是否有任何参数,如果有,则仅启动真正的xyz命令。显然,更改/usr/bin/xyz为命令的完整路径。