Разница между bash-shell и ksh-shell при использовании while с read - что я могу сделать в bash для того же ответа, что и в ksh?
У меня есть два сценария:
в баш
#!/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?
1 ответ
Проблема в том, что в bash 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"