У меня есть два сценария:
в bash
#!/bin/bash
H_VARIABLE=empty
echo "Zeile1
Zeile2" |
while read satz
do
H_VARIABLE="$H_VARIABLE $satz"
done
echo H_VARIABLE=$H_VARIABLE
Результат:
H_VARIABLE=empty
в кш
#!/usr/bin/ksh
H_VARIABLE=leer
echo "Zeile1
Zeile2" |
while read satz
do
H_VARIABLE="$H_VARIABLE $satz"
done
echo H_VARIABLE=$H_VARIABLE
Результат:
H_VARIABLE=leer Zeile1 Zeile2
Вывод: leer Zeile1 Zeile2
! = leer
Что можно сделать в bash, чтобы получить тот же ответ, что и в ksh?
Проблема здесь - то, что в ударе while
цикл выполняется в подоболочке, когда это находится на RHS канала. Вы могли сделать вместо этого
H_VARIABLE=leer
while read satz
do H_VARIABLE="$H_VARIABLE $satz"
done < <(
echo "Zeile1
Zeile2"
)
замена процесса использования или, с помощью здесь, строка
H_VARIABLE=leer
while read satz
do H_VARIABLE="$H_VARIABLE $satz"
done <<< "Zeile1
Zeile2"
Видит также var сценария удара, не измененный после цикла