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

Переменная - это имя, если оно выбрано правильно с символическим значением, которое содержит значение или значения. Используйте этот тег, если ваш вопрос касается использования переменных в сценариях оболочки (если вы хотите спросить о переменных в языках программирования, вам, вероятно, следует задать их в StackOverflow)

2
Как вставить переменные в строку, содержащую «»?
Я хочу построить строку XML, вставив переменные: str1="Hello" str2="world" xml='<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>' echo $xml Результат должен быть <?xml version="1.0" encoding="iso-8859-1"?><tag1>Hello</tag1><tag2>world</tag2> Но то, что я получаю, это: <?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2> Я тоже пробовал xml="<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>" Но это удаляет внутренние двойные кавычки и дает: <?xml version=1.0 encoding=iso-8859-1?><tag1>hello</tag1><tag2>world</tag2>
25 bash  shell  variable  xml 

4
Почему моя переменная локальна в одном цикле '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 # …


5
Зачем использовать двойные кавычки в тесте [[]]?
Допустим, у нас есть 2 целых числа в скрипте bash: value1=5 value2=3 Тогда зачем нам использовать двойные кавычки в случае теста? Например: if [[ "$value1" -eq "$value2" ]] Почему бы просто не использовать следующее? if [[ $value1 -eq $value2 ]] Для меня двойные кавычки не имеют никакого смысла.
23 bash  shell  quoting  variable  test 


3
Как я могу расширить переменную в кавычках до нуля, если она пуста?
Скажем, у меня есть сценарий: some-command "$var1" "$var2" ... И, в случае, если var1это пусто, я бы предпочел, чтобы он был заменен ничем вместо пустой строки, чтобы выполняемая команда была: some-command "$var2" ... и нет: some-command '' "$var2" ... Есть ли более простой способ, чем тестирование переменной и ее условное …

2
Установка переменной оболочки в ноль слияния
Я действительно люблю "объединение нулей", где вы можете установить переменную на первое "ненулевое" значение в списке вещей. Многие языки поддерживают это, например: C #: String myStr = string1 ?? string2 ?? "default"; JavaScript: var myStr = string1 || string2 || "default"; ...и т.д. Мне просто любопытно, можно ли это сделать …
20 bash  shell  variable 

4
dirname и basename против расширения параметров
Есть ли объективная причина предпочесть одну форму другой? Производительность, надежность, портативность? filename=/some/long/path/to/a_file parentdir_v1="${filename%/*}" parentdir_v2="$(dirname "$filename")" basename_v1="${filename##*/}" basename_v2="$(basename "$filename")" echo "$parentdir_v1" echo "$parentdir_v2" echo "$basename_v1" echo "$basename_v2" Производит: /some/long/path/to /some/long/path/to a_file a_file (v1 использует расширение параметров оболочки, v2 использует внешние двоичные файлы.)

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


5
Труба присваивает переменную
Для простоты я хотел бы сделать: echo cart | assign spo; echo $spo Выход: корзина Такое assignприложение существует? Я знаю все способы сделать это с помощью замены.
19 bash  variable 

3
Использование переменных оболочки для параметров команды
В скрипте Bash я пытаюсь сохранить параметры, которые я использую, rsyncв отдельной переменной. Это хорошо работает для простых опций (вроде --recursive), но у меня возникают проблемы с --exclude='.*': $ find source source source/.bar source/foo $ rsync -rnv --exclude='.*' source/ dest sending incremental file list foo sent 57 bytes received 19 …
19 bash  variable 

1
Почему $ {$ #} возвращает тот же результат, что и $$ в оболочке?
Пытаясь получить последний набор позиционных параметров /bin/dash, я пытался echo ${$#}. Удивительно, но это привело не к ошибке, а к PID, который совпадает с $$содержимым переменной. Вопрос, почему этот синтаксис работает? Какое синтаксическое правило применяется к этой оболочке? В основном то, что я сделал, это $ set 1 2 3 …
18 shell  variable 

3
Почему параметры в кавычках не работают, но работают без кавычек?
Я читал о том, что я должен заключать в кавычки переменные в bash, например, «$ foo» вместо $ foo. Однако при написании скрипта я обнаружил случай, когда он работает без кавычек, но не с ними: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command …

6
Должны ли переменные быть заключены в кавычки при выполнении?
Общее правило в сценариях оболочки заключается в том, что переменные всегда должны заключаться в кавычки, если нет веской причины не делать этого. Для получения более подробной информации, чем вы, вероятно, хотели бы узнать, взгляните на эти замечательные вопросы и ответы: последствия для безопасности того, что вы забыли заключить переменную в …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.