我正在尝试从某些阵列构建Zenity核对清单。我目前的方法是遍历数组,构建一个字符串并将其传递给Zenity,如下所示:
#!/bin/bash
column0=( "row 0" )
column1=( "row 0" )
column0+=( "row 1" )
column1+=( "row 1")
column0+=( "row 2" )
column1+=( "row 2" )
table=''
for (( i=0; i<${#column0[@]}; i++ ))
do
table="$table TRUE \"${column0[$i]}\" \"${column1[$i]}\""
done
echo $table
zenity --list --checklist --width=600 --height=450 \
--column="column 0" \
--column="column 1" \
--column="column 2" \
$table
事实是,尽管echo语句产生了正确的字符串,但这不起作用并且清单全部被破坏了。我如何将字符串传递给Zenity有什么问题吗?
答案 0 :(得分:1)
table
必须是一个数组,原因与您创建column0
和column1
数组的原因相同:保护作为每个元素一部分的空格。
column0=( "row 0" "row 1" "row 2")
column1=( "row 0" "row 1" "row 2")
table=()
for (( i=0; i<${#column0[@]}; i++ ))
do
table+=(TRUE "${column0[$i]}" "${column1[$i]}")
done
zenity --list --checklist --width=600 --height=450 \
--column="column 0" \
--column="column 1" \
--column="column 2" \
"${table[@]}"