Що відображає відлуння $ -1?


14

Що робить висновок echo $-1, echo $-2, echo $-3.. значить?

На одному з моїх вікон Linux відображається:

echo $-1
imsBEl1
echo $-2
imsBEl2

А на іншому вікні Linux він показує:

echo $-1
himBH1
echo $-2
himBH2

Вони відображають місця в пам'яті чи щось інше?


1
У назві виникла така проблема на бічній панелі: meta.stackexchange.com/q/229363/205964
— IQAndreas

Я додав запропоновану редакцію, яка намагалася виправити її, але незабаром зрозуміла, що MathJax видає лише бічну панель, а це означає, що коли заголовок знаходиться на цій сторінці, він просто отримує непотрібні зворотні риски.
— IQAndreas

Відповіді:


19

POSIX визначено $ - як:

-

(Дефіс.) Розширюється на поточні прапори параметрів (однолітерні назви опцій, об'єднаних у рядок), як зазначено при виклику, за допомогою встановленої спеціальної вбудованої команди або неявно оболонкою.

Таким чином, $-може бути різна основа на вашій оболонці або як ви викликаєте її.

1або 2тут розділені лексеми. Коли оболонка побачить цитування $, вона визначить початок будь-яких кандидатів на розширення параметрів, підстановку команд або арифметичне розширення. Це побачив $-і розширив, залишив решту без змін.

Ви можете ознайомитись з розділом Розпізнавання токенів для отримання детальної інформації.


18

echo $-друкує параметри поточної оболонки (без -префікса). 1і 2є додатковими непов'язаними маркерами.


11

Додавання до відповіді Мирослава:

echo $-друкує параметри поточної оболонки (без -префікса). 1 і 2 - додаткові непов'язані лексеми.

Це означає, що це варіанти для кожної машини відповідно.

imsBEl
himBH

Я дослідив значення кожного прапора і склав значення нижче, з невеликим перефразовуванням.

-і

Якщо опція -i присутня, оболонка є інтерактивною.

-м

Режим монітора. Управління роботою ввімкнено.

-В

Оболонка виконує розширення дужок ( див. Розширення дужки ). Це увімкнено за замовчуванням.

-ів

Якщо параметр -s присутній, або після обробки параметрів не залишається жодних аргументів, команди зчитуються зі стандартного вводу. Цей параметр дозволяє встановлювати позиційні параметри при виклику інтерактивної оболонки.

-Е

помилка

-л

Зробіть bash діяти так, ніби його викликали як оболонку для входу

-х

хешал

-H Розширення історії

Ця функція включена за замовчуванням для інтерактивних оболонок.


3

Щоб розширити існуючі відповіді, спробуйте echo "${-1}"і echo "${-2}"- ви отримаєте помилку "Неправильна заміна", оскільки замість використання -1в якості імені змінної дефіс використовується для заміни значення, якщо ім'я змінної до цього не визначене. Наприклад:

$ unset foo
$ echo "${foo-bar}"
bar
$ foo=test
$ echo "${foo-bar}"
test
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.