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

bash dialog inputbox with variable entered

我正在为这段代码苦苦挣扎:

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

returns 总是:

ping: unknown host $shopnum

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

提前致谢。

参数扩展不是递归的。如果您输入 ping $shopnum,则 $komanda 将扩展为文字文本 ping $shopnum,而不是 ping 3 或分配给 shopnum.

的任何值

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

eval "$komanda"

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