Bash создайте путь с переменными, разделенными на _, и проверьте, существует ли - PullRequest
1 голос
/ 22 октября 2019

В Bash я пытаюсь создать путь с двумя переменными внутри:

/path/to/my/file/${variable1_-}${variable2}/Still/some/path

Моя переменная 2 всегда установлена, но переменная 1 может быть пустой, и в этом случае я не хочу печатать"_"

Я пробовал строку выше, но, похоже, не правильно. Может ли кто-нибудь помочь с печатью правильного пути?

Заранее спасибо за ваши предложения!

Ответы [ 3 ]

4 голосов
/ 22 октября 2019

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

/path/to/my/file/${variable1}${variable1:+_}${variable2}/Still/some/path

или, что эквивалентно, вложенное

/path/to/my/file/${variable1:+${variable1}_}${variable2}/Still/some/path

, где фигурные скобки перед подчеркиванием необходимы для разделенияимя переменной из буквального текста.

2 голосов
/ 22 октября 2019

Вы можете использовать это. https://linux.die.net/man/1/bash $ {параметр: + слово}

установить также переменную1

variable1=VAR1
variable2=VAR2
variable3=${variable1:+_}
echo /path/to/my/file/${variable1}${variable3}${variable2}/Still/some/path

установить только переменную2

variable1=
variable2=VAR2
variable3=${variable1:+_}
echo /path/to/my/file/${variable1}${variable3}${variable2}/Still/some/path
0 голосов
/ 22 октября 2019

С помощью нескольких строк кода это может работать:

run () {
    prefix="" # empty
    if [ -n "$variable1" ]; then
        prefix="${variable1}_"
    fi
    echo "/path/to/my/file/${prefix}${variable2}/Still/some/path"
}

# set only variable2
variable2=var2
run
# set also variable1
variable1=var1
run

вывод:

/path/to/my/file/var2/Still/some/path
/path/to/my/file/var1_var2/Still/some/path

описание:

-n проверяет, не является ли строка пустой, в этом случае я заполняю prefix variable1 и подчеркиванием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...