变量赋值在case语句中(bash)
问题描述:
我想在我的bash脚本中解析传入选项,并将值保存在变量中。 这是我的代码:变量赋值在case语句中(bash)
#!/bin/bash
while getopts "H:w:c" flag
do
# echo $flag $OPTIND $OPTARG
case $flag in
H) host = "$OPTARG"
;;
w) warning = "$OPTARG"
;;
c) critical = "$OPTARG"
;;
esac
done
然而,内部“情况”的陈述必须是命令行命令,所以无法根据需要进行分配。什么是正确的方法来做到这一点?
答
围绕=
运营商删除空格:
case "$flag" in
H) host="$OPTARG" ;;
w) warning="$OPTARG" ;;
c) critical="$OPTARG" ;;
esac
答
您还需要改变optstring - 的c
选项需要遵循一个冒号,如果要收集它的参数:
while getopts "H:w:c:" flag
答
当我创建一个脚本来练习if/then/else和case语句时,我采取了一种稍微不同的方法。顺便说一句,如果你安装cowsay;
sudo apt-get install cowsay
and fortune;
sudo apt-get install fortune
的是你可以使用这个脚本,然后玩它习惯于在case语句进行分配或使用的if/then/else语句。
#!/bin/bash
echo "Choose a character from the following list:"
echo
echo "1) Beavis"
echo "2) Cow Hitting a Bong"
echo "3) Calvin"
echo "4) Daemon"
echo "5) Dragon and Cow"
echo "6) Ghostbusters"
echo "7) Ren"
echo "8) Stimpy"
echo "9) Sodomized Sheep"
echo "0) Mech and Cow"
#
echo
read character
echo
#
case "$character" in
"1") file="beavis.zen.cow" ;;
"2") file="bong.cow" ;;
"3") file="calvin.cow" ;;
"4") file="daemon.cow" ;;
"5") file="dragon-and-cow.cow" ;;
"6") file="ghostbusters.cow" ;;
"7") file="ren.cow" ;;
"8") file="stimpy.cow" ;;
"9") file="sodomized-sheep.cow" ;;
"0") file="mech-and-cow.cow" ;;
*) clear; ./cowsay.sh;
esac
#
#echo "var 'file' == $file"
echo "What would you like your character to say?"
echo "Alternatively, if you want your character to"
echo "read you your fortune, type 'fortune'."
read input_string
#
if [ $input_string = fortune ] ; then
clear; $input_string | cowsay -f /usr/share/cowsay/cows/$file
else
clear; cowsay -f /usr/share/cowsay/cows/$file $input_string
fi
~
这就是为什么我恨:)
;; 我不得不删除第一个$,它的工作原理 – 2015-11-18 15:36:47
我的错误是用这样的^ h的bash脚本语言)$主机= “$ OPTARG” – 2016-10-18 10:30:01