Когда необходимо указывать аргумент командной строки?
1 ответ
Вы должны цитировать, когда это иначе будет интерпретироваться иначе, чем то, что вы могли бы сделать оболочкой.
Несколько примеров:
Вы бы цитировали строковый аргумент foo bar
чтобы программа не интерпретировала его как два аргумента из-за пробела.
# results in two directories, 'foo' and 'bar'.
mkdir foo bar
# results in one directory named 'foo bar'
mkdir "foo bar"
# you could also escape the space to prevent interpretation as argument separator
mkdir foo\ bar
Вы также цитируете, чтобы предотвратить некоторую специальную интерпретацию вашего ввода. Если оболочка использует $
для обозначения имени переменной, foo$bar
может интерпретироваться как foo
если $bar
не определено, или даже выдает ошибку.
bar=qux
# create directory fooqux
mkdir foo$bar
# create directory foo$bar
mkdir 'foo$bar'
В особом случае, например, в bash, вы цитируете $@
(аргументы текущей команды), чтобы убедиться, что они передаются другой команде, заключенной в кавычки по отдельности. Смотрите здесь для получения дополнительной информации.