私はここにこのシェルスクリプトを持っています。しかし、最後に変数を表示しようとすると、小さな、中、大のいずれかに付加された$ファイル変数が標準出力に表示されません。シェルがここで何をしているのですか?それを修正するために何ができますか?ここには何が起こっていますか?シェルプログラミング
#!/bin/sh
# sorts txt files into small, medium and large
# depending on number of lines
# small <= 10
# medium <= 100
# large > 100
small="Small Files:"
medium="Medium Files:"
large="Large Files:"
for txtFile in *.txt
do
wc -l $txtFile
done |
while read lineCount file
do
if [ $lineCount -lt 10 ]
then
small="$small $file"
elif [ $lineCount -lt 100 ]
then
medium="$medium $file"
else
large="$large $file"
fi
done
echo "$small"
echo "$medium"
echo "$large"
良い解決策ですが、これは役割を逆転させることに注意してください。 'wc'はまだサブシェルで実行されています。 – l0b0
ここで問題となるのは、OPが '#!/ bin/sh'を使用しており、プロセス置換がベースラインのPOSIX shでは利用できないということだけです。 –