sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #49423
Bash namespace problem
Jeg har et problem med at få transporteret data ud af et while-do loop i
bash scripts.
Jeg har ikke fundet en beskrivelse af reglerne for namespace i bash-man
siderne.
Det følgende bash script og tilhørende output skulle kunne illustrere
problemstillingen.
#!/bin/bash
###################################################################
## set -x
w1="0"
echo "(21) w1 = '${w1}'"
w1=`echo "${w1} + 1" | bc` # w1++
echo "(22) w1 = '${w1}'"
echo "A
B
C" | while read X
do
echo "(23) X = '${X}'"
echo "(24) w1 = '${w1}'"
w1=`echo "${w1} + 1" | bc` # w1++
echo "(25) w1 = '${w1}'"
done
echo "(26) X = '${X}' <========== Value changed"
echo "(27) w1 = '${w1}' <========== Value changed"
w1=`echo "${w1} + 1" | bc` # w1++
echo "(28) w1 = '${w1}'"
exit 0
###################################################################
Output:
(21) w1 = '0'
(22) w1 = '1'
(23) X = 'A'
(24) w1 = '1'
(25) w1 = '2'
(23) X = 'B'
(24) w1 = '2'
(25) w1 = '3'
(23) X = 'C'
(24) w1 = '3'
(25) w1 = '4'
(26) X = '' <========== Value changed
(27) w1 = '1' <========== Value changed
(28) w1 = '2'
Jeg håber der er en af jer der kan kaste lys over hvad der foregår her,
Jeg har midlertidigt løst problemet ved at skrive resultatet til en fil
og derefter indlæse resultatet uden for loopet, men der er lidt omstændigt.
Mvh
Hans Christian Studt
Follow ups