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"
但是,最好重新考虑您的设计,这样用户就不需要知道代码中存在哪些变量名。
我正在为这段代码苦苦挣扎:
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"
但是,最好重新考虑您的设计,这样用户就不需要知道代码中存在哪些变量名。