Я новичок в программировании скриптов bash, и когда я изучил расширение переменной, я озадачен переменной.
1.when Я хочу, чтобы определить переменную, можно сделать следующим образом:bash: переменная с двойными кавычками
name=foo
name="foo"
name='foo'
чем разница между themm? 2.when Я хочу напечатать переменную, можно сделать следующим образом»
echo $name
echo "$name"
echo "$(name)"
3.Я также сталкиваются часть следующим образом:
name=$(date)
что„()“делают, почему он может разрешить команду?
Я гугле мой вопрос и прочитать некоторые документы, например, (http://www.serverwatch.com/tutorials/article.php/3898896/Single-vs-Double-Quotes-in-Bash.htm), но я до сих пор озадачивает, может кто-нибудь объяснить это ясно?
(3) называется «подстановка команды». См. Http://mywiki.wooledge.org/CommandSubstitution –
(2) - 'echo $ name' разбивает содержимое' $ name' на слова, расширяет globs и передает каждое слово в качестве отдельного аргумента в 'echo'. Таким образом, он изменяет новые строки в пробелы и заменяет '*', окруженный пробелами, списком файлов в текущем каталоге. 'echo '$ name" ', напротив, испускает точное содержимое' $ name', ** если ** это значение, которое 'echo' по своей сути нарушено и неспособно обрабатывать (для многих реализаций' echo', '-n' и' -E' являются такими значениями). Если вы хотите что-то, что работает как 'echo', но всегда верно,' printf '% s \ n' '$ name "' является безопасной и переносимой ставкой. –
(1) - все они идентичны в приведенном здесь прецеденте. См. Http://mywiki.wooledge.org/Quotes для получения более общей документации. –