bash腳本字元串
① 如何將bash shell腳本字元串寫入到文件中
剛學完新書《實用Linux Shell編程》,寫的不錯,容易懂,網上和書店都有賣。
現在試著回答,僅供參考,謝謝。
1)先保證文件內容正確:
2)文件1文件2隻有唯一字元串,所以情況相對簡單。腳本寫好了,別忘了給腳本增加執行許可權。
② hell 如何在bash腳本中連接兩個字元串變數
bash在一個腳本里引用另一個腳本定義的變數有3種方法:
fork(/directory/script.sh)
fork是最普通的,就是直接在腳本裡面用/directory/script.sh來調用script.sh這個腳本.
運行的時候開一個sub-shell執行調用的腳本,sub-shell執行的時候,parent-shell還在。
sub-shell執行完畢後返回parent-shell.sub-shell從parent-shell繼承環境變數.但是sub-shell中的環境變數不會帶回parent-shell
exec(exec/directory/script.sh)
exec與fork不同,不需要新開一個sub-shell來執行被調用的腳本.被調用的腳本與父腳本在同一個shell內執行。但是使用exec調用一個新腳本以後,父腳本中exec行之後的內容就不會再執行了。這是exec和source的區別
source(source/directory/script.sh)
與fork的區別是不新開一個sub-shell來執行被調用的腳本,而是在同一個shell中執行.所以被調用的腳本中聲明的變數和環境變數,都可以在主腳本中得到和使用.
可以通過下面這兩個腳本來體會三種調用方式的不同:
1.sh
#!/bin/bash
A=B
echo"PIDfor1.shbeforeexec/source/fork:$$"
exportA
echo"1.sh:$Ais$A"
case$1in
exec)
echo"usingexec…"
exec./2.sh;;
source)
echo"usingsource…"
../2.sh;;
*)
echo"usingforkbydefault…"
./2.sh;;
esac
echo"PIDfor1.shafterexec/source/fork:$$"
echo"1.sh:$Ais$A"
2.sh
#!/bin/bash
echo"PIDfor2.sh:$$"
echo"2.shget$A=$Afrom1.sh"
A=C
exportA
echo"2.sh:$Ais$A"
執行情況:
$./1.sh
PIDfor1.shbeforeexec/source/fork:5845364
1.sh:$AisB
usingforkbydefault…
PIDfor2.sh:5242940
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5845364
1.sh:$AisB
$./1.shexec
PIDfor1.shbeforeexec/source/fork:5562668
1.sh:$AisB
usingexec…
PIDfor2.sh:5562668
2.shget$A=Bfrom1.sh
2.sh:$AisC
$./1.shsource
PIDfor1.shbeforeexec/source/fork:5156894
1.sh:$AisB
usingsource…
PIDfor2.sh:5156894
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5156894
1.sh:$AisC
$
③ bash腳本中,條件判斷一個字串是否在數組中,除了列舉之外,還有什麼簡單的寫法嗎
只能是遍歷數組元素來比較:
if [ "$str1「 = "conditon1" ]; then
action1
elif [ 「$str1」 = "conditon3" ]; then
action 3
fi
for elem in ${array[@]}
do
if [ "$str1" = "$elem" ]; then
action2
break
fi
done
④ 在shell bash腳本里,如何把一個字元串中的回車轉成其他字元
假設 s 是含回車的字元串
echo$s|tr' '' '
能夠將回車轉成 Tab。 可以換成你想要字元。