gpt4 book ai didi

linux - 将字符串或数组中的代码插入到whiptail中

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:49 25 4
gpt4 key购买 nike

我对 Linux、shell 和脚本都是新手。我遇到了一个问题,无论我如何尝试 Google 都找不到答案。

我有一个脚本,它为一个名为“whiptail”的程序创建菜单项,这似乎是在 Debian 上为 Raspberry Pi 显示对话框和菜单项的标准方法。列表项是根据 Linux 机器上的各种文件中找到的各种数据创建的。我的代码开始

#!/bin/sh

该列表是在脚本顶部的 #!/bin/sh 环境中创建的。

但是,为了举例,让我们将列表定义为:

LIST="\"Tag 1\" \"Item 1\" \\ \n\"Tag 2\" \"Item 2\" \\ \n"

有效的代码是:

while true; do
TESTRESULT=$(whiptail --menu "Test" 20 80 12 --cancel-button Cancel --ok-button Select \
"Tag 1" "Item 1" \
"Tag 2" "Item 2" \
3>&1 1>&2 2>&3)
RET=$?
if [ $RET -eq 1 ]; then
echo "Cancel"
exit 0
elif [ $RET -eq 0 ]; then
echo "Do something with the selection stored in TESTRESULT"
exit 0
else
exit 1
fi

我不知道如何替换

  "Tag 1" "Item 1" \
"Tag 2" "Item 2" \

与“LIST”变量中的项目。我有一种感觉,答案在于“eval”,但我也无法将其作为解决方案。

我也在尝试将 LIST 创建为数组,但我认为这也使事情变得复杂。

有人有什么想法吗?

最佳答案

我还意识到每个菜单项末尾的“\”可能告诉 shell 程序“视为一行”而不是分隔菜单项,但在重新格式化“LINE”以充当单行列表后,我在使用时仍然遇到问题

"TESTRESULT=$(whiptail --menu "Test" 20 80 12 --cancel-button Cancel --ok-button Select $LIST 3>&1 1>&2 2>&3)  

我想知道这是否与 $LIST 在 $() 容器中使用有关。

关于linux - 将字符串或数组中的代码插入到whiptail中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com