パイプを使用して、コマンド2からコマンド1の出力を再利用します。

パイプを使用して、コマンド2からコマンド1の出力を再利用します。

数値リストを返すLinuxコマンドがあります。ディレクトリパスを形成し、そのパスにあるファイルをキャプチャするには、この番号が必要です。例: myCommand は以下を返します。

1 
10
30 
40

次のすべてのファイルをキャプチャしたいと思います。

 /folder/1/folder2 
 /folder/10/folder2 
 /folder/30/folder2
 /folder/40/folder2

何が欲しいのか知ってほしい。そうでない場合は、お気軽にお問い合わせください。これは私の現在のコードです。

 myCommand | xargs cat

しかし、ディレクトリ1,10,30と40が存在しないため、明らかに動作しません。

私は出力を次のようにしたいと思います: catted value - myCommandによって生成された数値

ベストアンサー1

仕事をするのに問題はありませんxargs

myCommand | xargs -I{} sh -c 'echo -n {}\ ; cat /folder/{}/folder2/file'

しかし、forループの使用は構文的により正確で柔軟です。

for genpath in $(myCommand)
do
    echo -n $genpath\ 
    cat /folder/$genpath/folder2/file
done

またはwhileループを介して

while read genpath
do
    echo -n $genpath\ 
    cat /folder/$genpath/folder2/file
done < <(myCommand)

おすすめ記事