Мне сказали, что пробелы важны в bash
других сценариях оболочки, и я не должен менять существование пробелов, если я не знаю, что я делаю. Под «изменением существования» я имею в виду либо вставку пробела между двумя непробельными символами, либо удаление пробела между двумя непробельными символами, например, изменение var="$val"
на var ="$val"
или наоборот. Я хочу спросить
Существуют ли случаи, когда использование одного пробела или нескольких последовательных пробелов в сценарии оболочки имеет значение? ,
(Конечно, вставка / удаление пробела в кавычках имеет значение, например, изменение с echo "a b"
на echo "a b"
или наоборот. Я ищу примеры, отличные от этого тривиального примера.)
Я сталкивался с этим вопросом, но он касается добавления и удаления пробелов между двумя непробельными символами, для которых я знаю много примеров, которые могли бы изменить ситуацию.
Любая помощь будет оценена. Включите больше разновидностей раковин, если это возможно.
источник
echo
команду с таким большим пробелом между командой и аргументом.Это, вероятно, обман, но это:
отличается от этого:
хотя пробелы не в кавычках. ;-)
Более смешно, это:
отличается от этого:
хотя они выглядят одинаково!
источник
Если мы не будем говорить о космическом характере (
U+0020
), но любой символ пробела (U+0020
,\n
,\t
и т.д.), то один конкретный случай приходит мне на ум: вот-документы.Этот код (с использованием пробелов):
Распечатает:
Но этот код (с помощью вкладок):
Распечатает:
Это потому что ( как утверждает POSIX ):
источник
<<-
оператора. Большое спасибо.Это также оказывает влияние при написании операторов присваивания. Например, если я скажу,
FOO=xyz
что он создаст переменную окруженияFOO
с именем valuexyz
, но если я разделю равенства с пробелом, он подумает, что я запускаю программу с именемFOO
arg=xyz
. Так что это имеет значение, когда дело доходит до определенного синтаксиса.источник
FOO=xyz
создает внутреннюю переменную оболочки, но не переменную среды. Вы нуждаетесьset -a
илиexport FOO=xyz
для этого (то есть сделаете это частью среды непроцессорных подпроцессов).