Я нашел еще пару таких вопросов, но их ответы не подходят мне.Если файл существует всегда 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 #
Но когда я бег СБН НИИЮ я получаю этот результат:
[email protected] /test # /root/Dropbox/Skripte/skripte_CX30/filecheck.sh /test
Die Datei /test/temp.mp4 ist nicht vorhanden!
temp.mp4
[email protected] /test #
и что не имеет смысла, потому что файл существует и имеет правильное название, которое должно работать.
if [ -d "$AUFPFAD/temp.mp4" ]; then
происходит в ИСТИНА, но это, очевидно, FALSE и ТБЙ я не понимаю, почему.
То, что я испытал:
Ввод выражения без
"
в:if [ -d $AUFPFAD/temp.mp4 ]; then
же результата.
Я уверен, что я что-то упустил.
Используйте '-e' (или' -f') вместо '-d'. '-d' проверяет, является ли его аргумент каталогом. – redneb
Спасибо тоже :) – EpsilonAlpha