有没有办法让 bash 脚本在加载时需要一组参数,如果不需要,它会自动echo
在屏幕上输出指令?
查看这个脚本示例copy
user@localhost : user # ./copy
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
user@localhost : user #
我希望它确保如果没有给出参数,它将自动在 上吐出一些预定义的文本echo
。
我知道如何确保用户输入正确的值,但我只想向他们显示初始的“使用”信息。
答案1
我经常使用这样的结构:
case "$1" in
'start')
startProfile
;;
'stop')
stopProfile
;;
'restart')
stopProfile
startProfile
;;
*)
echo "Usage $0 start|stop|restart <profile|application>"
esac
您有一个处理正常情况的 switch-case,如果没有一个适合,那么默认情况会打印使用说明。
答案2
您可以尝试这样的操作:
#!/usr/bin/bash
[ $# -eq 0 ] && cat <<XXX && exit 0;
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
XXX
echo Check args "$@"
示例运行:
# ./test.sh
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
# ./test.sh -x -y
Check args -x -y
您可以使用以下方式以非常方便的方式处理参数getopts
狂欢内置命令。或者外部getopt(3)命令(特别是当您使用长(例如--longopt)参数时)。