как проверить наличие любого файла в скрипте 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 (которая в любом случае лучше подходит для сценариев).

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