GNU/Linux >> Belajar Linux >  >> Linux

Cakupan variabel untuk skrip bash shell dan fungsi dalam skrip

Do the backticks spawn a subshell and thus making my script not work? :

Ya benar dan setiap perubahan yang dibuat dalam variabel dalam subkulit tidak terlihat di shell induk.

How do I work around this issue?

Anda mungkin dapat mencoba loop ini yang menghindari pemijahan subkulit:

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:Tapi testfunc masih akan dipanggil dalam sub proses.


Anda dapat mencoba sesuatu seperti

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"

Linux
  1. Menavigasi shell Bash dengan pushd dan popd

  2. Menyesuaikan shell Bash

  3. Bagaimana Cara Mendapatkan Alamat Ip Sendiri Dan Menyimpannya Ke Variabel Dalam Script Shell?

  1. Tujuan Kata Kunci "lakukan" Di Bash For Loops?

  2. Alasan Bash Shell Tidak Memperingatkan Anda Tentang Aritmatika Overflow Dll?

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Mengapa Regex Di Bash Hanya Bekerja Jika Itu Adalah Variabel Dan Tidak Secara Langsung??

  2. Cara menggemakan Baris Baru di Bash Shell Script

  3. Menggunakan skrip Apache2Buddy untuk kinerja dan stabilitas