run.sh
次のスクリプトがあります。
#!/bin/bash
FILES=$(find corpus/ -type f)
for i in $FILES
do
./individual.sh $i
done
問題なく実行されます。
各ファイルをfindからに転送したいと思います./individual
。
私はこれを行うことができると思います:
find corpus/ -type f | ./individual.sh
しかし、試してみると、""という名前のファイルだけがパイプで接続されます(エラーが発生しました)。
正しい構文は何ですか?
答え1
findオプションを使用する必要があります-exec
。
find corpus/ -type f -exec ./individual.sh {} \;
見つかった一致ごとにfind
personal.shを実行し、それを{}
見つかったファイル名に置き換えます。\;
これでexec
検索が終了します。
パイプが機能しない理由は、find出力がパラメータでindividual.sh
はなくSTDINを介して提供されるためです。スクリプトを使用するには、STDINを介して入力またはパラメータを照会する方法を知る必要があります。