Bashスクリプトループにパラメータを追加する

Bashスクリプトループにパラメータを追加する

使いたいwhiptail他のプログラムの出力に基づいてチェックボックスのリストを生成します。最初のプログラムでは、各出力行の最初の単語だけが必要なのでawk

Bashが配列をどのように処理するかを理解するには、私はtldpでこのリンクを使用しています。。配列のサイズを確認する方法を学びました。ここ

これは期待どおりに機能しませんが、echo出力をコピーしてwhiptail前に ""を入力すると機能します。

このコードが正しく機能するように変更するにはどうすればよいですか?

program.sh:

#! /bin/bash
find ./  -printf "%f\n"

mainscript.sh:

#! /bin/bash
MYARRAY=($(./program.sh -l | awk '{print $1;}'))
MYPARAMS=" --checklist \"\" 15 40 5"
i=0
while [[ $i -lt ${#MYARRAY[@]} ]]
do
        MYPARAMS+=" \"${MYARRAY[$i]}\" \" \" off"
        i=$[$i+1]
done
whiptail $MYPARAMS
echo $MYPARAMS
exit

ベストアンサー1

これは非常に理想的なソリューションではありませんが、次のものを使用できますeval

eval whiptail $MYPARAMS

問題が参照にあると思われます。しかし、MYPARAMSを配列に設定すると、期待どおりに機能します。

#! /bin/bash
MYARRAY=($(./program.sh -l | awk '{print $1;}'))
MYPARAMS=( --checklist "" 15 40 5 )
i=0
while [[ $i -lt ${#MYARRAY[@]} ]]
do
        MYPARAMS+=( "${MYARRAY[$i]}" " " off )
        i=$[$i+1]
done
whiptail "${MYPARAMS[@]}"
echo "${MYPARAMS[@]}"
exit

おすすめ記事