Если бы я должен был догадаться, я бы подозреваю IFS
. SET
списки IFS
тоже. А для меня IFS
IFS
(пространство, горизонтальная вкладка, новая линия и нуль):
$ printf "%s" "$IFS" | od -a
0000000 sp ht nl nul
0000004
Наличие символа Nul ( \ 0
) вызывает GREP
Для лечения его в качестве двоичного файла, поэтому в зависимости от вашего GREP
, вы можете увидеть:
$ set | grep COLUMNS
Binary file (standard input) matches
Вы можете принудительно GREP
для лечения входа в текст:
-a, --text
Process a binary file as if it were text; this is equivalent
to the --binary-files=text option.
и так:
$ set | grep COLUMNS --text
COLUMNS=239
набор | Столбцы GREP
должны отображать «двоичные файлы (стандартные входные) совпадения» (с GNU GREP). Муру правильно идентифицировал виновник: при ZSH, IFS
содержит нулевый байт в дополнение к стандартным символам пространства, вкладке, новой строке.
запустить набор | GREP -Text Columns
Чтобы Grep игнорируют его наклон, чтобы пропустить двоичные файлы.
Установите
не является портативным, надежным способом для списка параметров в данный момент, потому что его выход неоднозначен во многих оболочках (вы не можете отличить новую часть, которая является частью переменного значения из новой строки. который разделяет переменные). Выход набора
в ZSH происходит, чтобы цитироваться, чтобы быть однозначным, но трудно разобраться: GREP
может еще вернуть ложные срабатывания. Чтобы перечислить все параметры в ZSH, перечисляйте клавиши параметров
массива :
print -rl ${(ko)parameters}