2016-09-23 10 views
2

私はこのような他のいくつかの質問を見つけましたが、答えは私の場合には合いません。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 

同じ結果:

  1. がで"せずに式を置く:私がテストしている何

私は何かを見落としていると確信しています。

+5

使用 '-e'(または' -f')の代わりに '-d'を。 '-d'は引数がディレクトリかどうかを調べます。 – redneb

+0

ありがとうございました:) – EpsilonAlpha

答えて

2

使用-eファイルが存在するかどうかを確認するには:

if [ -e "$AUFPFAD/temp.mp4" ]; then 

-dディレクトリのために使用されています。ファイルが存在する場合

次の演算子はtrueを返し:

-b FILE 
      FILE exists and is block special 
    -c FILE 
      FILE exists and is character special 
    -d FILE 
      FILE exists and is a directory 
    -e FILE 
      FILE exists 
    -f FILE 
      FILE exists and is a regular file 
    -g FILE 
      FILE exists and is set-group-ID 
    -G FILE 
      FILE exists and is owned by the effective group ID 
    -h FILE 
      FILE exists and is a symbolic link (same as -L) 
    -k FILE 
      FILE exists and has its sticky bit set 
    -L FILE 
      FILE exists and is a symbolic link (same as -h) 
    -O FILE 
      FILE exists and is owned by the effective user ID 
    -p FILE 
      FILE exists and is a named pipe 
    -r FILE 
      FILE exists and read permission is granted 
    -s FILE 
      FILE exists and has a size greater than zero 
    -S FILE 
      FILE exists and is a socket 
    -t FD file descriptor FD is opened on a terminal 
    -u FILE 
      FILE exists and its set-user-ID bit is set 
    -w FILE 
      FILE exists and write permission is granted 
    -x FILE 
      FILE exists and execute (or search) permission is granted 
+0

大きな感謝!私はとても盲目だった* facepalm * – EpsilonAlpha

関連する問題