Переменная чтения из другого файла в Bash

Вы можете сделать это:

for i in ABC.*; do cp {ABC,DEF}."${i#*.}"; done
1
05.12.2018, 00:46
3 ответа

Я не уверен во всем, что происходит, и что должно происходить, но когда вы говорите

export snapshot_pw=snp_pw

вы устанавливаете переменную окружения snapshot_pwв строку snp_pw. Вы, вероятно, хотите сделать

export snapshot_pw="$snp_pw"

для установки переменной окружения snapshot_pwк значению переменной snp_pw, т. е. $snp_pw.

Кроме того, вы должны указать переменную оболочки "$mail_log"и любые другие, которые вы используете без кавычек. (Вам не нужны {и }.)

0
28.01.2020, 00:22

Минимальный тестовый пример показывает, что и bash, и expectсчитывают одну и ту же переменную окружения:

#!/bin/bash
export foo="bar$$"
echo "bash $foo"

expect <(cat <<'EOD'
puts "tcl  $env(foo)"
EOD
)

который при запуске показывает одинаковые значения на обоих языках:

-bash-4.2$ bash mixin
bash bar7242
tcl  bar7242
-bash-4.2$ bash mixin
bash bar7247
tcl  bar7247
-bash-4.2$ 

поэтому неясно, что вы подразумеваете под «он не читает» и какова ваша общая цель для этого кода.

0
28.01.2020, 00:22

Вы можете установить переменную на основе содержимого файла с синтаксисом, подобным

snp_pw="$(cat passwd_file)"

напр.

$ cat passwd_file 
anewpassword

$ cat x
#!/bin/bash

snp_pw=$(cat passwd_file)

echo Password is $snp_pw

$./x
Password is anewpassword
0
28.01.2020, 00:22

Теги

Похожие вопросы