Вопросы с тегом «variable-substitution»

25
Почему моя переменная локальна в одном цикле 'while read', а не в другом, на первый взгляд, похожем цикле?

Почему я получаю разные значения $xиз приведенных ниже фрагментов? #!/bin/bash x=1 echo fred > junk ; while read var ; do x=55 ; done < junk echo x=$x # x=55 .. I'd expect this result x=1 cat junk | while read var ; do x=55 ; done echo x=$x # x=1 .. but why? x=1 echo fred | while read var ;...

25
Что означает $ {PATH: +: $ {PATH}}?

Недавно я заметил следующее в моем профиле cygwin, точнее: /usr/local/bin:/usr/bin${PATH:+:${PATH}} Что это означает? Почему не просто $ PATH? Это «если $ PATH существует, то добавить: $ PATH»? Моя цель - поменять порядок и поместить пути cygwin за путями Windows. В прошлом я бы...

23
Двойная и тройная замена в bash и zsh

Продолжение к фоновой части в этом вопросе . В bashя могу использовать ${!FOO}для двойной замены, в zsh ${(P)FOO}. В обоих случаях работает старая школа (hack-y) eval \$$FOO. Итак, самая разумная и логичная вещь для меня - ${${FOO}}, ${${${FOO}}}…двойная / тройная / n замена. Почему это не...

20
Escape переменная для использования в качестве содержимого другого скрипта

Этот вопрос не о том, как написать правильно экранированный строковый литерал. Я не смог найти ни одного связанного вопроса, который бы не касался того, как экранировать переменные для непосредственного использования в скрипте или другими программами. Моя цель - включить скрипт для генерации других...

17
Как избежать пробела после переменной bash в строке?

У меня есть переменная для цвета. Я использую его, чтобы установить цвет для строк, оценивая его внутри строки. Тем не менее, мне нужно включить пробел после имени (чтобы имя не содержало часть текста). Это иногда выглядит плохо. Как я могу избежать использования (печати) этого пространства? Пример...

15
Поддерживает ли bash обратные ссылки в расширении параметров?

У меня есть имя переменной , descrкоторая может содержать строку Blah: -> r1-ae0-2 / [123], -> s7-Gi0-0-1:1-US / Fooи т.д. Я хочу , чтобы получить -> r1-ae0-2, -> s7-Gi0-0-1:1-USчасть из строки. На данный момент я использую descr=$(grep -oP '\->\s*\S+' <<< "$descr"для этого....

13
$ {! FOO} и zsh

${!FOO}выполняет двойную подстановку bash, то есть принимает (строковое) значение FOO и использует его в качестве имени переменной. zshне поддерживает эту функцию. Есть ли способ сделать эту работу такой же в bashи zsh? Фон: У меня есть список переменных среды, как PATH MAIL EDITOR и хотите сначала...

13
Можно ли распечатать содержимое содержимого переменной с помощью сценария оболочки? (косвенная ссылка)

Предположим, я объявил следующие переменные: $ var='$test' $ test="my string" Если я распечатаю их содержимое, я вижу следующее: $ echo $var $test $ echo $test my string Я хотел бы найти способ напечатать содержание содержимого $var(которое является содержанием $test). Поэтому я попытался сделать...

12
Разыменование составной переменной name

Я могу сделать это, но для этого нужно создать строку переменной, а затем разыменовать ее. Есть ли способ сократить это до более простого утверждения? #!/bin/bash FRUITS="BANANA APPLE ORANGE" BANANA_COLOUR="Yellow" APPLE_COLOUR="Green or Red" ORANGE_COLOUR="Blue" for fruit in $( echo $FRUITS ); do...

12
Является ли «$ {PS1-}» допустимым синтаксисом и чем он отличается от простого «$ PS1»?

Я смотрю на сценарий, который имеет: if [ "${PS1-}" ]; then Этот трейлинг -немного беспокоит меня, потому что он не соответствует стандартному синтаксису Posix или Bash. Это какой-то загадочный синтаксис, который был всегда, или это опечатка? Любые ссылки на стандарты / документы будут...

12
Видите расширение переменных Bash для отладки?

Есть ли какие-либо инструменты / приемы для расширения переменных, чтобы облегчить чтение bash-кода? Например, это будет конвертировать следующее: DIR=/var/tmp FILE=${DIR}/file SCRIPT_ROOT=/opt/root TOOL=${SCRIPT_ROOT}/tool.sh ${TOOL} ${FILE} чтобы: DIR=/var/tmp FILE=/var/tmp/file...

10
Может ли подстановка команд быть вложенной в подстановку переменных?

Я хотел бы использовать подстановку переменных в конкретной строке, к которой я обращаюсь через команду. Например, если я скопирую что-то в буфер обмена, я получу к нему доступ следующим образом. $ xclip -o -selection clipboard Here's a string I just copied. Если я назначу его переменной, то я могу...

10
Добавлять переменную в стиле PATH без создания начального двоеточия, если не установлено

Мне нужно добавить каталог в PKG_CONFIG_PATH. Обычно я бы использовал стандарт export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig но PKG_CONFIG_PATHне было ранее установлено в моей системе. Следовательно, переменная начинается с :символа, который говорит ей сначала искать в...

10
Как передать аргумент, хранящийся в переменной, в WGET?

Я пишу сценарий bash, который широко использует wget. Чтобы определить все общие параметры в одном месте, я храню их в переменных. Вот кусок кода: useragent='--user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"' cookies_file="/tmp/wget-cookies.txt"...

9
Манипулирование колонной

Я читал некоторые другие вопросы по манипулированию строками bash, но они кажутся специализированными приложениями. По сути, есть ли способ сделать ниже проще? вместо $ string='hello world'; string2="${string// /_}"; echo "${string2^^}" HELLO_WORLD что-то вроде $ echo 'hello world' | $"{-// /_}" |...