Що відображає відлуння $ -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.