我有一个使用'eval'命令的bash脚本。 我不知道这是不是一个好主意,但我需要这样做:
i=1
for e in $items; do
echo $i - $e
eval vm_$i=$e
let i++
done
然后我显示如下菜单:
while [ "$c" != "q" ]; do
read c
case $c in
1)
echo "CB Node $vm_1"
ssh "$vm_1" "couchbase-cli server-info -c $cluster"
;;
2)
;;
3)
;;
l) echo "Listing cluster nodes... "
;;
q) exit 2
esac
完成
它有效,但现在我想在我的'case'中使用变量$ c来生成好的变量$ vm1($ vm_ $ c,$ c实际上对应于$ i)。 我尝试过一些东西:echo“CB Node $(eval $ vm $ c)”,但它不起作用。
答案 0 :(得分:0)
如果您使用数组,这将更加优雅和安全。
vm=(dummy $items)
vm[0]='' # get rid of dummy zero index
while true; do
read -p 'Quick, do something! ' c
case $c in
[1-${#vm[@]}])
echo "CB Node ${vm[$c]}"
ssh "${vm[$c]}" "couchbase-cli server-info -c $cluster" ;;
l)
: ;;
q) exit 2;;
*) echo 'Try again.';;
esac
done
数组和间接引用${!var}
是仅限Bash的构造。