我有一个bash文件,我传递的参数就像
bash foo.sh update -f /var/ -v true
Run Code Online (Sandbox Code Playgroud)
所以根据这个答案我的脚本应该是这样的
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
}
Run Code Online (Sandbox Code Playgroud)
我使用第一个脚本作为入口点,因为我有其他功能做其他事情,但由于某种原因,上面的脚本甚至没有显示$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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
597 次 |
| 最近记录: |