bash 迴圈中變數作用範圍的問題分析

2021-09-22 08:30:25 字數 550 閱讀 4117

先來看一段錯誤的**。

複製**

**如下:

#!/bin/bash

for x in `ls */.*/.*`

cat $x|do echo $x

while read line

doc=`echo $line|awk -f'(' ''`

#echo $c

i=$((i+$c))

done

echo

done

echo $i

以上**有什麼問題呢?

cat之後的管道會使i的值沒有被加1。

正確的方法:

**如下:

#!/bin/bash

for x in `ls */.*/.*`

do echo $x

while read line

doc=`echo $line|awk -f'(' ''`

#echo $c

i=$((i+$c))

done<$x

echo

done

echo $i

bash的迴圈中無法儲存變數

在bash中,如果迴圈在乙個子shell中執行,那麼在迴圈中對迴圈外面的變數的更改將在迴圈退出後不可見。像下面的例子 bin sh var 1 python run.py while read line doecho line var var 1 let var var 1 done echo va...

for迴圈中的變數作用域

for語句的語法如下 for expression1 expression2 expression3 statement expression1為初始化部分,它在迴圈裡只在開始時執行一次 expression2為條件部分,它在迴圈中每次都被執行。expression3 為調整部分,它在迴圈體每次執行...

shell迴圈中變數的作用域問題

最近實現了乙個shell指令碼,功能簡單來說就是從檔案中按行讀取然後將所有行拼接成一行寫入乙個檔案,關鍵 如下 path all cat 1 while read line doif path all then path all line else path all path all,line fi...