← Back to team overview

sslug-teknik team mailing list archive

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