bash 脚本没有为变量分配标志
bash script does not assign flags to variable
我有一个 bash 文件,我在其中传递像
这样的参数
bash foo.sh update -f /var/ -v true
所以 according to this answer 我的脚本应该看起来像
if [[ "" == "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 [[ == "update" ]]; then
shift
updater "$@"
fi
我有一个 bash 文件,我在其中传递像
这样的参数bash foo.sh update -f /var/ -v true
所以 according to this answer 我的脚本应该看起来像
if [[ "" == "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 [[ == "update" ]]; then
shift
updater "$@"
fi