我正在尝试制作一个 shell 脚本,其设计如下运行:
script.sh -t application
首先,在我的脚本中,我想检查脚本是否已使用 -t 标志运行。例如,如果它在没有像这样的标志的情况下运行,我希望它出错:
script.sh
其次,假设有一个 -t 标志,我想获取该值并将其存储在一个可以在脚本中使用的变量中,例如如下所示:
FLAG="application"
到目前为止,我在这方面取得的唯一进展是 $@ 获取所有命令行参数,但我不知道这与标志有何关系,或者这是否可能。
你应该读一下这个getopts https://archive.is/TRzn4教程。
示例为-a
需要参数的开关:
#!/bin/bash
while getopts ":a:" opt; do
case $opt in
a)
echo "-a was triggered, Parameter: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
就像灰机器人说的(getopt
!= getopts
) :
外部命令 getopt(1) 使用起来永远不安全,除非您know它是 GNU getopt,你可以用 GNU 特定的方式来称呼它,and你保证
GETOPT_COMPATIBLE 不在环境中。使用 getopts (shell
内置),或者简单地循环位置参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)