Эхо-символы табуляции в сценарии bash
Используйте printf
, а не echo
.
Существует bashrc несколько разных версий команды bash-script echo
. Есть /bin/echo
(который может быть bashrc или не быть версией GNU Coreutils, в bash зависимости от системы), а bash-script команда echo
встроена в большинство .bashrc оболочек. В разных версиях bash-function есть разные способы (или bash-function нет) для указания или отключения tab экранирования для управляющих bash символов.
printf
, напротив, имеет .bash-profile гораздо меньше вариантов. Он bash может существовать как команда, обычно bash-function /bin/printf
, и он встроен в некоторые spaces оболочки (bash и zsh имеют bash-variables его, tcsh и ksh нет), но bash-alias различные версии намного bashrc более похожи друг на друга, чем tabpanel разные версии echo
есть. И вам bash-alias не нужно запоминать параметры spaces командной строки (за некоторыми .bashrc исключениями; GNU Coreutils bash-alias printf принимает --version
и --help
, а встроенный .bash-profile bash printf принимает -v var
для bash-script сохранения вывода в переменной).
Для bash вашего примера:
res=' 'x # res = "\t\tx"
printf '%s\n' "[$res]"
А теперь мне tabpanel пора признать, что echo
будет bash работать так же хорошо для .bashrc примера, о котором вы спрашиваете; вам bash-alias просто нужно заключить аргумент bash-variables в двойные кавычки:
echo "[$res]"
как писал bash-function кмкаплан (два с половиной .bash-profile года назад я только что заметил!). Проблема tab с вашими исходными командами:
res=' 'x # res = "\t\tx"
echo '['$res']' # expect [\t\tx]
не bash-alias с echo
; дело в том, что оболочка bash заменила табуляцию пробелом tabpanel до того, как echo
когда-либо echo ее увидел.
echo
подходит для простого spaces вывода, например echo hello world
, но вы spaces должны использовать printf
всякий spaces раз, когда хотите сделать .bashrc что-то более сложное. Вы .bashrc можете заставить echo
работать, но echo результирующий код, скорее .bashrc всего, выйдет из строя, если tabs вы запустите его с другой bashrc реализацией echo
или другой оболочкой.
bash
tabs
echo
spaces
Эхо-символы табуляции в сценарии bash
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.