Linux Dialog 包参数插入 for/while 循环?

标签 linux bash shell dialog

我想做的是将菜单项存储在数组中并动态检索它们,以获得尽可能多的可重用性。如以下代码所示,我在 *** 行遇到语法错误。该代码源自 Dialog 包示例。

function showSubMenu() {
      . ./setup-vars
      . ./setup-tempfile

      $DIALOG --clear --title $1 $2 \
       --menu "" $3 \
***    (for line in $4
        do 
          $line ""
        done) 2> $tempfile
      retval=$?
      . ./report-tempfile
}

TITLE="MyStrings"
TT= "$@"
MSG=("Linux" "Gentoo" "Arch" "Buildroot" "Ubuntu" "Debian" "RedHat")
SIZE="20 30 6"
for i in ${MSG[@]}
do
    echo $i
done
showSubMenu $TITLE $TT $SIZE ${MSG[@]}

我的问题是: 1.这样的代码可以吗? 2. 如果没有,是否还有其他可能或类似的想法可以做到这一点?

最佳答案

我明白了。

    function showSubMenu() {
      . ./setup-vars
      . ./setup-tempfile

      $DIALOG --clear --title $1 $2 \
       --menu "" $3 \
    `(for line in $4
        do 
          printf "${line}"
        done)` 2> $tempfile
      retval=$?
      . ./report-tempfile
}

TITLE="MyStrings"
TT= "$@"
MSG=("Linux" "Gentoo" "Arch" "Buildroot" "Ubuntu" "Debian" "RedHat")
SIZE="20 30 6"
for i in "${MSG[@]}"
do
    echo $i
done
showSubMenu $TITLE $TT $SIZE MSG[@]

关于Linux Dialog 包参数插入 for/while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095972/

相关文章:

java - 如何在 Ubuntu 16.04 上安装 Groovy 3.0?

java - 我选择 UDP 作为我的 peer 2 peer 服务,我如何证明它在我的情况下是可靠的

bash - 使用 sed 在排除字符的模式后插入字符

Linux Shell - Grep 命令

shell - 'date --date' 的 AIX 等效项

c - 更快的测试和清除位

mysql - 更改mysql目录后,Mysql将不再启动

linux - Bash 在用 sed 删除行后插入字符串

c - 在反引号之间执行的程序的 termcap

java - 寻找以前的工作目录来实现 "cd -"