shell script學習記錄(2)

2021-07-23 04:31:31 字數 1206 閱讀 1814

先上sh02.sh內容(內容來自《鳥哥的linux私房菜基礎學習篇》)。

#!/bin/bash

#program:

# user inputs his first name and lastname. program shows his full name.

#history

#2016/09/26 first release

path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export path

read -p "please input your first name:" firstname

read -p "plaese input your last name: " lastname

echo -e "\nyour full name is:$firstname $lastname"

#exit 0

分別使用source sh02.sh    

也就是說,使用source sh02.sh  執行時,變數的值使可以繼續在當前的程序中得到的。而使用另外兩種命令執行的話,不會改變這個變數的值。(記得測試的時候需要用不同的字串測試,不然很容易誤解的,不要問我怎麼知道的~~)

事實上,如果最先執行的不是  source sh02.sh的話,那個echo $firstname的結果什麼都沒有。

書上的解釋是,sh sh02.sh和./sh02.sh執行的時候,其實script是在子程序的bash內執行的,當子程序完成後,子程序的各項變數或者操作將會結束而不會傳回到父程序中。

source sh02.sh執行時,是在父程序中執行的。

另外,還有乙個不同的地方是exit 0的效果。

書上的案例,在這裡是沒有exit 0的,但是我因為偷懶就把之前sh01.sh的內容直接copy過來,所以exit 0開始還有。下面說說有exit 0 的時候的結果:

source sh02.sh執行結束之後,終端會關掉。

sh sh02.sh和./sh02.sh執行結果完全和沒有exit 0 的結果相同。

顯然,這個結果,也很好地驗證了上面的那個關於父程序和子程序的結論。

Linux 學習「學習shell script」

linux系統服務啟動的介面在 etc init.d 這個目錄下,目錄下所有的檔案都是script shell script在系統管理上面是很好的一項工具,但是在處理大量數值運算上就不夠好了,因為shell script速度較慢,使用cpu資源較多,造成主機資源分配不良 bin bash,放在第一行...

shell script學習筆記2

bash中的變數都是無型別的,可以通過declare來宣告int型變數 0,1,2 9,如果引數超過9個,那就需要用 的方式 引數數目 引數集合 最後乙個引數 整數比較 eq,ne,gt,ge,lt,le,如 if a eq b 需要雙括號,如 a b 字串比較 a z 如果 a以 z 開頭,那麼將...

關於shell script案例學習

測試指令碼程式如下 sh 3.2 cat test.sh if f etc passwd then echo 111 1 fiecho 222 2 sh 3.2 執行此指令碼程式,sh 3.2 test.sh test.sh line 3 syntax error near unexpected t...