Объединение переменных в Bash

глупый вопрос, без сомнения, я пытаюсь добавить переменную в середину переменной, поэтому, например, в PHP я бы сделал это:

$mystring = $arg1 . '12' . $arg2 . 'endoffile';

так что вывод может быть 20121201endoffile, как я могу добиться того же в скрипте linux bash?


person Dan Hall    schedule 14.01.2013    source источник
comment
Вы читали bash-script-variable-inside-variable?   -  person cyberhicham    schedule 15.01.2013


Ответы (1)


Попробуйте сделать это, в bash нет специального символа для объединения:

mystring="${arg1}12${arg2}endoffile"

объяснения

Если вы не ставите скобки, вы попросите bash для конкатенации $arg112 + $argendoffile (думаю, это не то, о чем вы просили), как в следующем примере:

mystring="$arg112$arg2endoffile"

Скобки являются разделителями для переменных, когда это необходимо. Когда он не нужен, вы можете использовать его или нет.

другое решение

(less portable : require bash > 3.1)

$ arg1=foo
$ arg2=bar
$ mystring="$arg1"
$ mystring+="12"
$ mystring+="$arg2"
$ mystring+="endoffile"
$ echo "$mystring"
foo12barendoffile

См. http://mywiki.wooledge.org/BashFAQ/013.

person Gilles Quenot    schedule 14.01.2013
comment
Использование фигурных скобок в качестве разделителей — очень полезный совет, спасибо! - person ; 16.11.2016