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

21
Как я могу расширить переменную в кавычках до нуля, если она пуста?

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

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

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

20
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"...

20
Установка переменной оболочки в ноль слияния

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

19
Использование переменных оболочки для параметров команды

В скрипте Bash я пытаюсь сохранить параметры, которые я использую, rsyncв отдельной переменной. Это хорошо работает для простых опций (вроде --recursive), но у меня возникают проблемы с --exclude='.*': $ find source source source/.bar source/foo $ rsync -rnv --exclude='.*' source/ dest sending...

18
Почему $ {$ #} возвращает тот же результат, что и $$ в оболочке?

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

18
кратчайший способ заменить символы в переменной

Есть много способов заменить символы в переменной. Кратчайший путь, который я обнаружил, trэто пока: OUTPUT=a\'b\"c\`d_123and_a_lot_more OUTPUT=$(echo "$OUTPUT"|tr -d "'\`\"") echo $OUTPUT Есть ли более быстрый способ? И это со ссылкой на безопасные цитаты , как ', "и `само по...

18
Должны ли переменные быть заключены в кавычки при выполнении?

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

18
Почему параметры в кавычках не работают, но работают без кавычек?

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

16
Как я могу объединить переменную оболочки с другими параметрами в моих командных строках?

Как я могу объединить переменную оболочки с другими параметрами в моих командных строках? Например, #!/bin/sh WEBSITE="danydiop" /usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql Мне нужно СЦЕПИТЬ...

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

После того, как я использую следующую команду, pngString="$(cat example.png)" echo -n "$pngString" > tmp.png Я не могу открыть tmp.png как файл PNG. Может быть, некоторая информация теряется, когда я использую $pngStringдля хранения файла изображения. Итак, вопрос: как я могу сохранить полную...

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

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

13
В чем разница между $ path и $ PATH (строчными и прописными) в zsh?

В FreeBSD 12, используя zshоболочку, я заметил эту разницу, когда смотрю на $path(строчные буквы) и $PATH(прописные). echo $path / sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin / usr / home / freebsd / bin echo $PATH / SBIN: / бен: / USR / SBIN: / USR / бен: / USR /...

13
Как увеличить локальную переменную в Bash?

Данные 1 \begin{document} 3 Код #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 который возвращается, 2но я хочу 3. Я безуспешно изменяю конец этого ответа о том, как я могу добавить числа в сценарии...

13
Реверсирование содержимого переменной словами

Так что, если у меня есть переменная VAR='10 20 30 40 50 60 70 80 90 100' и повторить это echo "$VAR" 10 20 30 40 50 60 70 80 90 100 Однако далее по сценарию мне нужно изменить порядок этой переменной, чтобы она выглядела как echo "$VAR" | <code to reverse it> 100 90 80 70 60 50 40 30 20 10 Я...

12
динамические (переменные) имена переменных bash

Я хочу динамически создавать последовательность строк, манипулируя массивом элементов и создавая некоторую арифметическую процедуру. for name in FIRST SECOND THIRD FOURTH FIFTH; do $name = $(( $6 + 1 )) $name = "${$name}q;d" echo "${$name}"; printf "\n" done Желание результата будет ниже для...