クォートで囲って一塊にして渡した空白を含んだ文字列が、パイプ先では空白区切りで解釈されます。パイプ先で一塊にした文字列ごとにグループとして認識させることはできないのでしょうか。
bash
1foo(){ 2 while read -r a b c; do 3 echo a is $a 4 echo b is $b 5 echo c is $c 6 done 7} 8bar(){ 9 while read -r x; do 10 for y in $x;do 11 echo "$y" 12 done 13 done 14} 15echo "aaa aa" "bbb bb" "ccc cc" | foo 16# => a is aaa 17# b is aa 18# c is bbb bb ccc cc 19echo "aaa aaa" "bbb bb" "ccc cc" | bar 20# => aaa 21# aa 22# bbb 23# bb 24# ccc 25# cc
expected
a is aaa aa b is bbb bb c is ccc cc
ゴールはリネーム前のファイルパスとリネーム後のファイルパスをペアにしてパイプに流し、パイプ先ではそれぞれ別の値として取り出して扱うことなのですが、ファイルパスに空白文字を含む可能性があるのでクォートしています。
もしも原理的に無理なのならば、タブ文字を区切りにするなど、他の方法を考えたいと存じます。
回答1件
あなたの回答
tips
プレビュー