yadを使用してアイテムのリストを表示し、すべてのアイテムに対してシェル コマンドを実行したいと考えています。ただし、yad は単純な空白とは思えない区切り文字を生成するようです。その出力を解析するのに助けが必要です。ユーザーが 3 つの項目すべてを選択すると、この bash スクリプト
#!/bin/bash
items=`yad --list --separator='' --height=600 --multiple --column="Items" item1 item2 item3`
echo $items
IFS=' ' read -r -a ARRAY <<< $items
for item in "${ARRAY[@]}"; do
echo "$item"
done
出力する必要があります
item1 item2 item3
item1
item2
item3
代わりに、スクリプトは次の出力のみを出力します。
item1 item2 item3
item1
このトリックを使用して、yad の出力を配列に解析しています。yad の前身である zenity ではうまく機能していましたが、yad では失敗するようです。
テキストファイルにエコー$items
し、このテキストファイルを cat で読み取ると、期待どおりに機能しますIFS=' ' read -r -a ADDR <<< $items
。上記のスクリプトを
echo "$items" > tmpfile
IFS=' ' read -r -a ADDR <<< `cat tmpfile`
期待される結果が得られます。
ここで何が欠けていますか?