私はこのような他のいくつかの質問を見つけましたが、答えは私の場合には合いません。File Existが常にfalseの場合
#!/bin/bash
AUFPFAD="$1"
DATEINUMMER=0
DATEISTRING=""
ERLEDIGT="nein"
TESTING=1
if [ $DATEINUMMER -eq 0 ]; then
if [ -d "$AUFPFAD/temp.mp4" ]; then
if [ $TESTING -eq 1 ]; then
echo "Die Datei $AUFPFAD/temp.mp4 ist vorhanden!"
fi
DATEINUMMER=$DATEINUMMER+1;
else
if [ $TESTING -eq 1 ]; then
echo "Die Datei $AUFPFAD/temp.mp4 ist nicht vorhanden!"
fi
DATEISTRING="temp.mp4";
fi
else
while [ $ERLEDIGT == "nein" ]
do
if [ -d "$AUFPFAD/temp$DATEINUMMER.mp4" ]; then
if [ $TESTING -eq 1 ]; then
echo "Die Datei $AUFPFAD/temp$DATEINUMMER.mp4 gibt's schon, also eines weiter und erneut prüfen"
fi
DATEINUMMER=$DATEINUMMER+1;
else
if [ $TESTING -eq 1 ]; then
echo "Die Datei $AUFPFAD/temp$DATEINUMMER.mp4 gibt's nicht, erstelle sie damit wir testen ob's dann weiter geht"
fi
DATEISTRING="temp$DATEINUMMER.mp4";
ERLEDIGT="ja";
fi
done
fi
if [ $TESTING -eq 1 ]; then
echo $DATEISTRING;
else
return $DATEISTRING;
fi
テストするには:私は、同じファイルが上書きされないように、バック記録プログラムについて説明する「自由な名前」を検索するスクリプトを書いたビデオストリームの記録プロジェクトのために
スクリプトは、私は、フォルダ「テスト」を作成し、そのフォルダ内のファイルにtouch
と「temp.mp4」を作成:
[email protected] /test # ls
temp.mp4
[email protected] /test #
しかし、私は、SCを実行すると
[email protected] /test # /root/Dropbox/Skripte/skripte_CX30/filecheck.sh /test
Die Datei /test/temp.mp4 ist nicht vorhanden!
temp.mp4
[email protected] /test #
とファイルがあると動作するはず正しい名前を、持っているので、それは意味がありません:RIPT私はこの結果を得ます。 TRUEに行くが、それは明らかにFALSEだとTBH、私はなぜそれを得ることはありません
if [ -d "$AUFPFAD/temp.mp4" ]; then
。
if [ -d $AUFPFAD/temp.mp4 ]; then
同じ結果:
がで
"
せずに式を置く:私がテストしている何。
私は何かを見落としていると確信しています。
使用 '-e'(または' -f')の代わりに '-d'を。 '-d'は引数がディレクトリかどうかを調べます。 – redneb
ありがとうございました:) – EpsilonAlpha