Как проверить наличие файла с использованием группового символа в оболочке Bourne? - PullRequest
2 голосов
/ 20 августа 2009

Я ищу что-то вроде:

if [ -f "filenam*" ]; then
   ...
fi

Но подстановочный знак (*) вызывает проблемы.

Я также пробовал:

if [ `ls filenam* > /dev/null 2>&1` ]; then
   ...
fi

Может работать в других оболочках, но не работает в оболочке Bourne (sh).

Спасибо за любую помощь!

РЕДАКТИРОВАТЬ: Извините, не C оболочки, Bourne shell (sh).

Ответы [ 5 ]

2 голосов
/ 20 августа 2009

Вместо использования test -n $(ls filenam*) вы можете предпочесть:

if ls filenam* 2> /dev/null | grep . > /dev/null; then
   ...
fi
0 голосов
/ 20 августа 2009

Мне нравится это:

function first() { echo "$1" ; }
[ -e $(first filenam*) ] && echo "yes" || echo "no"
0 голосов
/ 20 августа 2009

Вы были на правильном пути. Попробуйте это:

if [ ! -z `ls filenam*` ] ; then
    ...
fi

Это проверит, возвращает ли ls что-либо.

0 голосов
/ 20 августа 2009

Как это csh, а как же:

foreach i (`ls -d filenam*`)
    ...
end
0 голосов
/ 20 августа 2009

Поскольку это C, вам, вероятно, понадобится команда glob:

ls `glob filenam*`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...