shell變數重新賦值問題,shell指令碼 變數動態賦值問題

時間 2021-08-30 09:37:30

1樓:匿名使用者

先不正面回答問題。先談一個指令碼中可疑之處。

在對檔案filename.txt的每一行進行相同或有規律的處理時,常用2種方法。

常用的第一種方法是(就是檔案內容輸入重定向的方法):

while read line

do對$line的處理命令

done < filename.txt

常用的第二種方法是(cat加管道的方法):

cat filename.txt | while read line

do對$line的處理命令

done

針對這2種方法,舉例如下:

$ cat filename.txt

jack

mike

rose

$ cat a1.sh

#!/bin/bash

while read line

doecho "the name is $line"

done < filename.txt

$ cat a2.sh

#!/bin/bash

cat  filename.txt | while read line

doecho "my name is $line"

done

$ a1.sh    (或者執行./a1.sh)

the name is jack

the name is mike

the name is rose

$ a2.sh     (或者執行./a2.sh)

my name is jack

my name is mike

my name is rose

你在上面所提供的指令碼中,cat加管道的方法(cat  filename.txt |  while...)、檔案內容輸入重定向的方法(...

done < filename.txt )同時使用了,可能不算是問題,但幾乎沒有同時使用的。

下面言歸正傳。

下面的例子,一個輸出flase, 一個輸出true,看完例子就知道答案了:

$ cat filename.txt

jack

mike

rose

$ cat b1.sh

#!/bin/bash

bl=false

cat  filename.txt | while read line

dobl=true

echo "x=$bl"

done

echo $bl

$ cat b2.sh

#!/bin/bash

bl=false

while read line

dobl=true

echo "x=$bl"

done < filename.txt

echo $bl

$ b1.sh    (或者執行./b1.sh)

x=true

x=true

x=true

false

$ b2.sh    (或者執行./b2.sh)

x=true

x=true

x=true

true

供參考,謝謝!

2樓:匿名使用者

./表示執行當前目錄下某個可執行檔案,這個檔案不一定是bash指令碼,但是sh方式就只能執行shell指令碼,如果一個二進位制可執行程式你用sh ./binexample這種方式執行,會報錯的。

shell指令碼 變數動態賦值問題

3樓:匿名使用者

#!/bin/bash

ax="yyf"

bx="xnmbyy"

xv=`eval expr '$'$1x`echo $xv

4樓:剎神之劍

#!/bin/bash

ax="yyf"

bx="xnmbyy"

case $1 in

"a")

xv=$ax;;

"b")

xv=$bx;;

esac

echo $xv

shell中使用for迴圈對變數賦值出現問題!!!

5樓:小米飛貓

m=$((80*$j))

6樓:春天來了呃

#!/bin/bash

for((j=1;j<=5;j++))

dom=$[80*$j]

echo $m

done

如此,即可

7樓:匿名使用者

m=`expr 80 * $j`

shell中$1賦值給變數,此變數卻是空的,為什麼? 10

8樓:匿名使用者

filename=$1

賦值語句中不能有空格. 看看是不是這個問題.

9樓:匿名使用者

./表示執行當前目錄下某個可執行檔案,這個檔案不一定是bash指令碼,但是sh方式就只能執行shell指令碼,如果一個二進位制可執行程式你用sh ./binexample這種方式執行,會報錯的。

vc 指標變數賦值問題,指標變數賦值方式

雖然b是正確答案,但是對cd的理解不對。a,p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標 即指向的地址不能改變的針 雖然指標不能被修改,但是其指向的地址的內容是可以改的。c。a是常量,其地址不能被修改 d。錯誤在於對引用a的初始化,應該使用相同型別 ...

一個shell指令碼引用變數的問題

solaris 的 bin sh 是最原始的 shell,應該是不支援 這類用法的,你可以換成 bash。即把。bin sh 改成 path to bash 一般來說,要麼是 bin bash 或者 usr bin bash linux下shell指令碼中sqlplus呼叫shell變數的問題 1 ...

關於python中的賦值變數的問題

是指向同一個記憶體地址的,python的賦值是隻是把變數的記憶體地址賦值給另一個變數,這一點可以使用python的內建方法id 來進行測試,對於你給的例子 我們假設 qh 這個字串在記憶體中的地址是a,ljq 在記憶體中的地址是b you qh 讓you變數指向a地址。me you 讓me變數和yo...