我希望我的shell脚本打印出一个简单的用法指令,然后在没有参数的情况下调用它时退出。这就是我的尝试:
#!/bin/bash
(($#)) || cat <<EOF && exit
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Usage: Donec a diam lectus.
EOF
echo "You have provided at least one argument"
(特殊的bash变量$#
包含参数的数量,并且用双括号将其括起来使得在没有参数时将其计算为false。
这在没有参数的情况下有效,但如果是参数,则立即退出而不打印任何内容。我认为这是由于运营商的错误优先权。如何修复此脚本以执行我想要的操作?
答案 0 :(得分:3)
使用花括号对命令进行分组:
(($#)) || { cat <<EOF && exit
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Usage: Donec a diam lectus.
EOF
}
echo "You have provided at least one argument"
或者您可以放弃紧凑格式,并使用if
:
if [[ $# == 0 ]]
then cat <<EOF && exit
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Usage: Donec a diam lectus.
EOF
fi
echo "You have provided at least one argument"