У меня есть следующие строки в моем файле сценария bash .cfg DDF_SOURCE="siebel_DATA_DATE_FORMAT" DATA_DATE_FORMAT=${!DDF_SOURCE} как ${!DDF_SOURCEоценивается? Это было бы !siebel_DATA_DATE_FORMAT, что не имеет смысла для...
У меня есть следующие строки в моем файле сценария bash .cfg DDF_SOURCE="siebel_DATA_DATE_FORMAT" DATA_DATE_FORMAT=${!DDF_SOURCE} как ${!DDF_SOURCEоценивается? Это было бы !siebel_DATA_DATE_FORMAT, что не имеет смысла для...
Я уверен, что это относительно просто, я просто не знаю, как это сделать. #!/usr/bin/ksh set `iostat` myvar=6 Я хочу что-то подобное, echo ${$myvar}которое я хочу интерпретировать как ${$myvar}-> ${6}->value...
Почему я получаю разные значения $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 ;...
Недавно я заметил следующее в моем профиле cygwin, точнее: /usr/local/bin:/usr/bin${PATH:+:${PATH}} Что это означает? Почему не просто $ PATH? Это «если $ PATH существует, то добавить: $ PATH»? Моя цель - поменять порядок и поместить пути cygwin за путями Windows. В прошлом я бы...
Продолжение к фоновой части в этом вопросе . В bashя могу использовать ${!FOO}для двойной замены, в zsh ${(P)FOO}. В обоих случаях работает старая школа (hack-y) eval \$$FOO. Итак, самая разумная и логичная вещь для меня - ${${FOO}}, ${${${FOO}}}…двойная / тройная / n замена. Почему это не...
Этот вопрос не о том, как написать правильно экранированный строковый литерал. Я не смог найти ни одного связанного вопроса, который бы не касался того, как экранировать переменные для непосредственного использования в скрипте или другими программами. Моя цель - включить скрипт для генерации других...
У меня есть переменная для цвета. Я использую его, чтобы установить цвет для строк, оценивая его внутри строки. Тем не менее, мне нужно включить пробел после имени (чтобы имя не содержало часть текста). Это иногда выглядит плохо. Как я могу избежать использования (печати) этого пространства? Пример...
#!/bin/bash VALUE=10 if [[ VALUE -eq 10 ]] then echo "Yes" fi К моему удивлению, это выводит «Да». Я бы ожидал, что это потребует [[ $VALUE -eq 10 ]]. Я отсканировал CONDITIONAL EXPRESSIONSраздел man 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"для этого....
${!FOO}выполняет двойную подстановку bash, то есть принимает (строковое) значение FOO и использует его в качестве имени переменной. zshне поддерживает эту функцию. Есть ли способ сделать эту работу такой же в bashи zsh? Фон: У меня есть список переменных среды, как PATH MAIL EDITOR и хотите сначала...
Предположим, я объявил следующие переменные: $ var='$test' $ test="my string" Если я распечатаю их содержимое, я вижу следующее: $ echo $var $test $ echo $test my string Я хотел бы найти способ напечатать содержание содержимого $var(которое является содержанием $test). Поэтому я попытался сделать...
Я могу сделать это, но для этого нужно создать строку переменной, а затем разыменовать ее. Есть ли способ сократить это до более простого утверждения? #!/bin/bash FRUITS="BANANA APPLE ORANGE" BANANA_COLOUR="Yellow" APPLE_COLOUR="Green or Red" ORANGE_COLOUR="Blue" for fruit in $( echo $FRUITS ); do...
Переменная BUILDNUMBERустановлена в значение 230. Я ожидаю, 230_что будет напечатан для команды, echo $BUILDNUMBER_но вывод пуст, как показано ниже. # echo $BUILDNUMBER_ # echo $BUILDNUMBER...
Я смотрю на сценарий, который имеет: if [ "${PS1-}" ]; then Этот трейлинг -немного беспокоит меня, потому что он не соответствует стандартному синтаксису Posix или 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...
Я хотел бы использовать подстановку переменных в конкретной строке, к которой я обращаюсь через команду. Например, если я скопирую что-то в буфер обмена, я получу к нему доступ следующим образом. $ xclip -o -selection clipboard Here's a string I just copied. Если я назначу его переменной, то я могу...
Мне нужно добавить каталог в PKG_CONFIG_PATH. Обычно я бы использовал стандарт export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig но PKG_CONFIG_PATHне было ранее установлено в моей системе. Следовательно, переменная начинается с :символа, который говорит ей сначала искать в...
Я нашел скрипт, который имеет функцию, которая проверяет, установлена ли переменная, но я не очень хорошо ее понимаю. check_if_variable_is_set() { var_name=$1 if [ -z "${!var_name+x}" ]; then false else true fi } Что именно происходит с этой...
Я пишу сценарий 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"...
Я читал некоторые другие вопросы по манипулированию строками bash, но они кажутся специализированными приложениями. По сути, есть ли способ сделать ниже проще? вместо $ string='hello world'; string2="${string// /_}"; echo "${string2^^}" HELLO_WORLD что-то вроде $ echo 'hello world' | $"{-// /_}" |...