我正在尝试创建一个shell脚本,其设计如下:
script.sh -t application
Run Code Online (Sandbox Code Playgroud)
首先,在我的脚本中,我想检查脚本是否已使用-t标志运行.例如,如果它没有像这样的标志运行我想让它出错:
script.sh
Run Code Online (Sandbox Code Playgroud)
其次,假设有一个-t标志,我想获取该值并将其存储在我可以在我的脚本中使用的变量中,例如:
FLAG="application"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够在任何一个方面取得的唯一进展是$ @抓取所有命令行参数,但我不知道这与标志有什么关系,或者这是否可能.
为什么此选项仅在第一次使用时有效,然后每隔一次就被忽略?就像不使用该选项时正在重置一样。
这是我的功能:
testopts() {
local var="o false"
while getopts "o" option; do
case "${option}" in
o)
var="o true"
;;
esac
done
echo $var
}
Run Code Online (Sandbox Code Playgroud)
运行它时,它仅在第一次传递选项时返回 true。
Run Code Online (Sandbox Code Playgroud)$ testopts o false $ testopts -o o true $ testopts -o o false