Что означает '$ в bash?

добавление этих опций в docker exec решило мою проблему

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM
20
02.02.2020, 16:06
2 ответа

'$ ничего особенного не означает. С %dв printfон пытается оценить аргумент как целочисленное выражение. 'aпринимается заcharaили целое число 97. Вы получите тот же результат, даже если не используете раскрытие переменных:

$ printf %d\\n "'a'"
97
$ printf %d\\n "'0'"
48
$ printf %d\\n "'"$'\1'
1

Из документации bash наprintf(упор мой):

Arguments to non-string format specifiers are treated as C language constants, except that a leading plus or minus sign is allowed, and if the leading character is a single or double quote, the value is the ASCII value of the following character.

Любые оставшиеся символы игнорируются, как указано в комментариях.

28
28.04.2021, 23:25

'является частью аргумента printf (см. раздел «Аргументы» здесь).

$является частью обычного расширения оболочки, поэтому аргументы printfстановятся %dи 'a.

Наконец, конструкция $(...)представляет собой подстановку команд , что в данном случае означает, что NUMимеет значение, установленное на выходе функции printf.

21
28.04.2021, 23:25

Теги

Похожие вопросы