输入变量的bash对话框输入框

时间:2017-02-21 15:15:18

标签: bash variables dialog inputbox

我正在努力解决这个问题:

komanda=$(dialog --title "COMMAND" --backtitle "ENTER COMMAND: "
--inputbox "" 8 180 2>&1 >/dev/tty) 
if [ $? == 0 ]   then
    for  ((j=0;j<$tlen;j++))
      do
      shopnum=${selectedRPODS[j]}
      $komanda #executing the entered comand with variables.
    done
fi

当我在输入框中输入变量时,参数将作为字符串传递。在$ komanda

执行时,变量不起作用

示例输入文字:

ping $shopnum

始终返回:

ping: unknown host $shopnum

我想将变量作为ping的目标。我知道我对STDOUT做错了什么,但我无法找到正确的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

参数扩展不是递归的。如果您输入ping $shopnum,则$komanda会扩展为文字文字ping $shopnum,而不是ping 3或已分配给shopnum的任何值。

在这种情况下,由于您的目的是执行任意shell代码,因此您将使用eval

eval "$komanda"

但是,最好重新考虑您的设计,以便用户不需要知道代码中存在哪些变量名称。