как да проверя съществуването на всеки файл в csh скрипт?

За проверка на съществуването на всеки файл в csh скрипт, който използвам

if [ -f /var/opt/temip/conf/.temip_config ]

но получавам под грешка

if [ -f /var/opt/temip/conf/.temip_config ]

if: Expression Syntax.

Може ли някой да ми каже как да направя това?


person dcds    schedule 07.01.2015    source източник
comment
Това изобщо не е валиден Csh синтаксис. Което е хубаво нещо, защото вероятно не трябва да правите вашите скриптове в Csh. Вашият синтаксис е добър за sh, което вероятно е това, което трябва да използвате така или иначе. Без контекста на останалата част от вашия скрипт не можем да кажем наистина дали промяната на първия ред на #!/bin/sh би била осъществима.   -  person tripleee    schedule 07.01.2015
comment
@tripleee може ли просто да ми кажеш как да проверя съществуването на файл в csh скрипт?   -  person dcds    schedule 07.01.2015
comment
Откажи се csh. Кодирайте скрипта си в POSIX sh (за преносимост), или в GNU bash, или в Python, или в zsh   -  person Basile Starynkevitch    schedule 07.01.2015


Отговори (2)


От ръководната страница:

f
    Plain file

Използвате го с израз if:

if ( -f file.txt ) then
    echo Exists
else
    echo No such file
endif

Въз основа на този въпрос и предишния ви въпрос, изглежда, че сте доста невежи като как работи синтаксисът csh, тъй като продължавате да използвате синтаксиса на обвивката на POSIX. Бих силно препоръчал или да се запознаете със синтаксиса на csh, или просто да използвате POSIX shell (което вероятно е по-добро за скриптове така или иначе).

person Martin Tournoij    schedule 07.01.2015

В CShell за проверка на съществуването на файл използвайте опцията -e

Името на файла не трябва да бъде "твърдо кодирано" в оператора if, но може да бъде параметър като този:

 if (-e "$filePath") then

Ето пълен списък на заявките за файл Cshell.

-e file           file merely exists (may be protected from user)
-r file           file exists and is readable by user
-w file           file is writable by user
-x file           file is executable by user
-o file           file is owned by user
-z file           file has size 0
-f file           file is an ordinary file
-d file           file is a directory
person kvivek    schedule 07.01.2015