[英]bash script does not assign flags to variable
我有一個bash文件,我在其中傳遞諸如
bash foo.sh update -f /var/ -v true
所以根據這個答案我的腳本應該看起來像
if [[ "$1" == "update" ]]; then
updater
fi
function updater(){
verbose='false'
fflag=''
error=''
while getopts 'f:v' flag; do
case "${flag}" in
f) fflag="${OPTARG}";;
v) verbose='false';;
*) error="bflag";;
esac
done
echo $fflag
}
我將第一個腳本用作入口點,因為我還有其他函數可以執行其他操作,但是由於某些原因,上面的腳本甚至沒有顯示$fflag
的值,因此我嘗試將getopts循環移出該函數以徒勞無功
有3個問題:
"$@"
將命令行傳遞給函數 shift
刪除第一個參數 您可以使用以下腳本:
updater() {
verbose='false'
fflag=''
error=''
while getopts 'f:v' flag; do
case "$flag" in
f) fflag="${OPTARG}";;
v) verbose='false';;
*) error="bflag";;
esac
done
declare -p fflag
}
if [[ $1 == "update" ]]; then
shift
updater "$@"
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.