Почему я наблюдаю другое поведение эха?

Оказывается, что это было проблемой с LDAP для домена. Пользователь метки был клонирован от Adam, в результате он закончил с тем же идентификатором группы идентификатора пользователя и т.д. и т.д. Я tar'd содержание корневого каталога метки. Затем уничтоженная метка с ldap сервера и созданный его снова с нуля. Похож все это работает теперь.

5
21.08.2018, 01:01
2 ответа

Это не echo поведение. Это - поведение удара. Когда Вы используете echo $x сформируйтесь удар заставляют следующую команду обрабатывать (обработка как пространство):

echo␣␣hello

Затем эта команда маркируется, и удар получают два маркера: echo и hello таким образом вывод справедлив hello

Когда Вы используете echo "$x" сформируйтесь затем, удар имеет следующее во входе токенизатора:

echo␣"␣hello"

таким образом это имеет два маркера echo и ␣hello, таким образом, вывод отличается.

5
27.01.2020, 20:39
  • 1
    , я думаю, что Вы неправильно истолковали мой вопрос. то, что я спрашиваю, - то, почему мой ведущий пробел обрезается/теряется в первом случае. –  ronnie 16.10.2012, 15:42
  • 2
    почти той же причиной. команда маркируется, и затем каждый маркер рассматривают. если Вам нравится включать пространство в маркер Вы, также должен выйти из него с обратной косой чертой или включить с кавычками: ' whitespace' или \ whitespace –  Serge 16.10.2012, 15:47
  • 3
    я перепишу ответ для отражения этих изменений –  Serge 16.10.2012, 15:50
  • 4
    @ronnie В руководстве удара, считайте раздел по расширениям оболочки. Токенизация, где пробел становится разделителями, является разделением слова. –  Gilles 'SO- stop being evil' 16.10.2012, 16:00
  • 5
    Просто подсказка редактирования. Я нахожу те символы нижнего подчеркивания, дезориентация, возможно,  выглядела бы лучше: “(рассматривают ␣ как пробелы): echo␣␣helo”. Википедия упоминает это, поскольку “Unicode также обеспечивает некоторые видимые символы для помогания для пространства когда необходимый – U+2423 | 9251 | поле Open | Control Pictures | ␣”. –  manatwork 16.10.2012, 16:08

Причина Вы видите другой вывод, состоит в том потому что echo[1 space]Hello строка синтаксически равна echo[5 spaces]Hello. Пробел проигнорирован, и слово 'Hello' рассматривают как аргумент echo. Первая строка, в он - самая простая форма, является почти таким же, как будто Вы сказали echo "Hello". Во второй строке Вы явно включали ведущее пространство как часть аргумента echo, с echo " Hello".

В первой строке Вы передаете 5 символьных строк echo, и во второй строке Вы передаете 6 символьных строк echo.

Так, на самом деле, поведение echo то же в обоих экземплярах, это - просто строка, передаваемая echo это изменяется.

1
27.01.2020, 20:39

Теги

Похожие вопросы