Unixでファイルに書き込む

Unixでファイルに書き込む

Unixでファイルを書き込む際に問題があります

[ -s $PWD/MEN/*sub.wav ] && echo "File there" || echo "File Not there" > temp.csv

この unix コマンドを試していますが、temp.csv ファイルは記録されません。

ベストアンサー1

temp.csvコマンドに書き込まれる唯一の内容は最後のコマンドであり、echoテストまたは最初のテストが失敗した場合にのみ実行されます。-secho

ファイルに正しく出力するには:

if [ -s MEN/*sub.wav ]; then echo "File there"; else echo "File not there"; fi >temp.csv

または(まったく同じではありません)、

[ -s MEN/*sub.wav ] && echo "File there" >temp.csv || echo "File not there" >temp.csv

また、パターンがMEN/*sub.wav複数のファイル名と一致する場合、プログラムは構文エラーを生成します。

かどうかをテストしますか?最後のもの名前がパターンと一致し、空でない場合(-sテスト)次を使用します。

set -- MEN/*sub.wav

# Loop over the matching names (if any).
# Stop when we find a non-empty file.
while [ "$#" -gt 0 ] && [ ! -s "$1" ]; do
     shift
done
if [ -s "$1" ]; then
    echo File exists
else
    echo File not there
fi >temp.csv

かどうかをテストしますか?みんなパターンに一致する名前が空ではありません。

set -- MEN/*sub.wav

# Loop over the matching names (if any).
# Stop when we find an empty file.
while [ "$#" -gt 0 ] && [ -s "$1" ]; do
     shift
done
if [ "$#" -eq 0 ]; then
    echo File(s) exists
else
    echo File(s) not there
fi >temp.csv

コードの最後の部分は、場合によっては拡張されていないパターンを維持するためにシェルを使用します。いいえ名前が一致します。

おすすめ記事