我有一个用bash编写的脚本。 在一个地方,我有一个zenity列表,有几个选项:
cuda
之后,当用户选择第一个选项时,我想做某事,当用户选择第二个选项时 - 别的等等。
但idk如何在If语句中使用变量answer:
menu=("first option" "second option" "third option")
answer=`zenity --list --column=Menu "${menu[@]}" --height 170`
当我选择第一个选项并使用:echo“$ answer”时,它会打印“第一个选项”
但是当我尝试时:
if [ option1 ]; then
...do something...
elif [ option2 ]; then
... do something else...
else
... do something different...
fi
它不起作用。
答案 0 :(得分:0)
您必须将$answer
放入""
以避免word splitting
:
#!/usr/bin/env bash
menu=("first option" "second option" "third option")
answer=`zenity --list --column=Menu "${menu[@]}" --height 170`
if [ "$answer" = "first option" ]; then
printf "First option has been chosen\n"
fi
此外,它recommended使用$(...)
代替反叛。替换:
answer=`zenity --list --column=Menu "${menu[@]}" --height 170`
使用:
answer=$(zenity --list --column=Menu "${menu[@]}" --height 170)
修改强>:
我还建议在case
使用reducers
,但other answer已经提出了建议。
答案 1 :(得分:0)
除引号外,if [ "$answer" = "first option" ]
应该有效。您可能希望在此处使用case
语句:
case "$answer" in
"${menu[0]}")
echo do stuff for first
;;
"${menu[1]}")
echo do stuff for second
;;
"${menu[2]}")
echo do stuff for third
;;
esac