2013-07-10 3 views
0

В статье, которую я читал в последнее время, опубликованной первоначально в 1996 году, следующий код котируются способ, в котором для оценки ли каталог $ 1 хранятся в доступном для записи:Различие в более поздних версиях Баша

if [ ! -w `dirname $1` ] 
    then 
     echo $0: I will not be able to delete $1 for you. 
     exit 1 
    fi 

«Изучение оболочки Bash» O'Reilly - упоминает, что использование серьезных акцентов (`) теперь архаично. Если это так, то каким теперь будет стандартный способ выполнения этой задачи?

Большое спасибо,

hcaw

+2

Руководство по GNU bash можно найти в различных форматах [здесь] (http://www.gnu.org/software/bash/manual/). – devnull

+0

Следующая ссылка также дает хорошее объяснение различий между 'и $() http://mywiki.wooledge.org/BashFAQ/082 – hcaw

ответ

2

Чтобы сделать это, теперь мы используем:

if [ ! -w $(dirname $1) ] 
then 
    echo $0: I will not be able to delete $1 for you. 
    exit 1 
fi 

что,

` ` 

синтаксис был заменен

$() 
+1

Спасибо за ваш ответ, отныне я попытаюсь проконсультироваться только с актуальными вопросами, руководство по эксплуатации! hcaw – hcaw

+1

Вы также должны обернуть все файлы/пути/любые ссылки в двойных кавычках, чтобы предотвратить неправильное сравнение, если они содержат пробелы или другие метасимволы оболочки: 'if [! -w "$ (dirname" $ ​​1 ")"] 'и' echo '$ 0: я не смогу удалить $ 1 для вас. "' –

Смежные вопросы