Что делает вывод echo $-1
, echo $-2
, echo $-3
.. значит?
На одной из моих коробок Linux он показывает мне:
echo $-1
imsBEl1
echo $-2
imsBEl2
И на другой коробке Linux, это показывает:
echo $-1
himBH1
echo $-2
himBH2
Они отображают некоторые области памяти или что-то еще?
Ответы:
POSIX определил $ - как:
Так
$-
может быть разная база на вашей оболочке или как вы ее вызываете.1
или2
разделены токеном здесь. Когда оболочка видит кавычки$
, она идентифицирует начало любых кандидатов на расширение параметров, подстановку команд или арифметическое расширение. Он увидел$-
и расширил его, оставив остальное без изменений.Вы можете увидеть раздел распознавания токенов для более подробной информации.
источник
echo $-
выводит параметры текущей оболочки (без-
префикса).1
и2
являются дополнительными несвязанными токенами.источник
Добавляем к ответу Мирослава:
Это означает, что это опции для каждой машины соответственно.
Я исследовал значение каждого флага и собрал значения, приведенные ниже, с небольшим перефразированием.
источник
Чтобы расширить существующие ответы, попробуйте
echo "${-1}"
иecho "${-2}"
- вы получите ошибку «Плохая подстановка», потому что вместо использования-1
в качестве имени переменной дефис используется для замены значения, если имя переменной перед ней не определено. Например:источник