вопрос по bash

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

newk
Сообщения: 25

вопрос по bash

Сообщение newk »

Подскажите пожалуйста: везде написано, что одинарные кавычки подавляют любые expansion.
Почему тогда PS1='[$?]' корректно в качестве строки приглашения выводит статус возврата предыдущей команды?
Т.е вопрос такой - когда все таки в кавычках есть expansion, а в каких нет?
Спасибо сказали:
bl00dl1nes
Сообщения: 115
ОС: ubuntu

Re: вопрос по bash

Сообщение bl00dl1nes »

Код: Выделить всё

bl00dl1nes@naruto[~]$ echo "123"; test='[$?]'; echo $test;
123
[$?]
bl00dl1nes@naruto[~]$

?

При замене одинарных кавычек на двойные все встает на свои места (в переменной test оказываеться код возврата последней команды в квадратных скобках)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: вопрос по bash

Сообщение watashiwa_daredeska »

Содержимое PS1 экспандится еще раз при выводе подсказки.

bash

$ a='${b}' $ b=B $ PS1="${a}${b}"'${a}${b}\$ ' BB${b}B$ echo $PS1 ${b}B${a}${b}\$ BB${b}B$
Спасибо сказали:
newk
Сообщения: 25

Re: вопрос по bash

Сообщение newk »

???

Вопрос как раз в том что PS1='[$?]' работает КОРРЕКТНО (в посте я тоже не ошибся) - т.е expansion действует получается в этой ситуации даже в одинарных кавычках?. А где же систематичность?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: вопрос по bash

Сообщение watashiwa_daredeska »

newk писал(а):
14.07.2009 10:47
т.е expansion действует получается в этой ситуации даже в одинарных кавычках?
Повторю: PS1 экспандится при выводе подсказки.

UPD: при присваивании, экспандится не PS1, а команда. Итого, происходит два раскрытия: раскрытие команды и раскрытие содержимого PS1 при выводе подсказки.
Спасибо сказали:
newk
Сообщения: 25

Re: вопрос по bash

Сообщение newk »

watashiwa_daredeska писал(а):
14.07.2009 11:05
newk писал(а):
14.07.2009 10:47
т.е expansion действует получается в этой ситуации даже в одинарных кавычках?
Повторю: PS1 экспандится при выводе подсказки.

UPD: при присваивании, экспандится не PS1, а команда. Итого, происходит два раскрытия: раскрытие команды и раскрытие содержимого PS1 при выводе подсказки.



Спасибо watashiwa_daredeska, когда писал второй пост не видел вашего комментария.
Спасибо сказали: