2016-10-17 12 views
45

あるファイル(archived_sensor_data.json)が存在するかどうかを確認するシェルスクリプトを作成したい場合は、それを削除します。 http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.htmlに続いて、私は次のことを試してみた:私は./test_controllerコマンドを使用して結果test_controllerスクリプトを実行しようとすると、シェルスクリプトにファイルが存在するかどうかを確認する方法

[-e archived_sensor_data.json] && rm archived_sensor_data.json 

ただし、これはエラーに

[-e: command not found 

をスローします。コードの何が間違っていますか?

答えて

104

ブラケットと-eの間にブランクがありません。ここで

#!/bin/bash 
if [ -e x.txt ] 
then 
    echo "ok" 
else 
    echo "nok" 
fi 
+5

私は最終的に2つの空白を追加しました.1つは開き角括弧の後に1つ、もう1つは閉じ前のものです: '[-e archived_sensor_data.json] && rm archived_sensor_data.json'。スクリプトは今動作するようです。 –

+0

私はこれがBourne Shell 'sh'でもうまくいくと思います –

4

lsを使用して別の方法である:

(ls x.txt && echo yes) || echo no 

あなたがlsから任意の出力を非表示にする場合ので、あなただけはい参照または全く、/dev/nullstdoutstderrをリダイレクト:

(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no 
関連する問題