Do the backticks spawn a subshell and thus making my script not work?
:
Ano, dělají a jakékoli změny provedené v proměnné v subshell nejsou viditelné v nadřazeném shellu.
How do I work around this issue?
Pravděpodobně můžete vyzkoušet tuto smyčku, která zabrání vytvoření podshell:
while read line
do
while read i
do
end=$(echo $i | cut -d ' ' -f 1-4 | cut -d ',' -f 1)
duration=$(testfunc "$end")
done < <(grep -P "\w+ stream" "$file2" | grep "$line")
done < "$file1"
PS:Ale testfunc
bude stále volána v dílčím procesu.
Můžete zkusit něco jako
global1=0
global2=0
start_read=true
function testfunc {
global1=9999
global2=1111
echo "in testfunc"
echo $global1
echo $global2
duration=something
}
file1=whocares
file2=whocares2
for line in `cat $file1`
do
for i in `grep -P "\w+ stream" $file2 | grep "$line"` # possible but unlikely problem spot
do
end=$(echo $i | cut -d ' ' -f 1-4 | cut -d ',' -f 1) # possible but unlikely spot
testfunc $end # more likely problem spot
done
done
echo "global1 = $global1"
echo "global2 = $global2"
Jak mohu propojit starší verzi sdílené knihovny
Jak mohu získat informace o kontejneru Docker Linux ze samotného kontejneru?