# 如果直接使用檔案路徑,如果沒有x許可權會提示許可權不夠
./test.sh
# 使用bash或者sh直譯器不需要獲取執行許可權
bash test.sh
sh test.sh
上面幾種方式都是通過開啟子程序的方式來啟動的bash:
# 通過pstree命令可以檢視到程序樹
# 都是在bash終端下開啟了乙個子程序(bash or ./test.sh)
sshd——sshd——bash——test.sh——sleep # ./test.sh
sshd——sshd——bash——test.sh——sleep # bash test.sh
# 直接使用bash
source test.sh
. test.sh
# 使用pstree檢視程序樹,直接在bash下面執行了,沒有開啟子程序
sshd——sshd——bash——sleep
上面的程序樹,sshd
下面的bash
就是我們在xshell
或者mobaxterm
中開啟的shell
程序,如果使用source
直接在當前bash下執行,按下ctrl+c
,就會退出整個終端
# 將使用者輸入的值繫結的key1變數中
# 預設不支援\字元,需要使用-r選項支援\字元
read key1
# -p增加提示
# -s 輸入的內容敲回車後不顯示在終端上
read -s -p "請輸入使用者名稱" key2
# 設定輸入超時時間
echo
$key1
"123"
檔案描述符:以
ls
命令為例:
# 將標準輸出重定向到info.log中
ls test.sh > info.log
# 如果test.sh不存在,上述命令還會在終端上列印錯誤資訊
# 將標準錯誤輸出重定向到error.log中: 2>
ls test.sh 2> error.log
# 同時將標準輸出和標準錯誤輸出重定向到不同的檔案中
ls test.sh > info.log 2> error.log
# 同時將標準輸出和標準錯誤輸出重定向到相同檔案中
ls test.sh &
> runtime.log
# 標準輸出重定向到錯誤輸出
ls test.sh 1>
&2# 標準錯誤輸出重定向到標準輸出
ls test.sh 2>
&1
雖然標準輸出和標準錯誤輸出互相轉換在終端中看不出本質區別,但是顯示的通道是不一致的例子:將標準輸出重定向到檔案,將錯誤輸出重定向到標準輸出從而實現info和error都匯入到同一檔案中
ls test.sh > info.log 2>
&1
linux黑洞
在linux中,有乙個特殊的裝置單引號/dev/null
,無論寫入什麼都會被系統吞噬。如果有一些錯誤資訊
可以遮蔽特殊符號(雙引號不可以)
num=1
echo
$num
# 1echo
"$num"
# 1echo
'$num'
# $num
反引號
反引號的作用是進行命令替換,輸出命令的執行結果
# 將/var/log下的日誌檔案打包
tar -zcf /root/log-`
date
` /var/log
命名規則不能包含特殊符號,僅僅支援大小寫字元 + 下劃線(_)
不能以數字開頭
# 定義變數,注意等號兩邊不能有空格
a=1
# 輸出
echo
$a# 取消變數定義
linux shell程式設計一
一 shell 是linux核心與使用者應用的溝通介面,相當於下面的ui部分 二 shell有很多種,常用的是bash sh,csh,ksh,bash,三 shell指令碼就是shell命令的集合 四 變數賦值中不能有空格,如 bin bash 1 2 3 100 sum 0 for i 1 i 1...
Linux Shell程式設計一
互動模式 當shell收到使用者輸入命令後,就開始執行這項命令,並把結果顯示到螢幕上,結束後shell又會顯示系統提示符,等待使用者輸入下一條命令。後台執行 後台執行的符號為 在命令後面加上 符號,就可以將程式放到後台執行。例如 top 在後台執行的程式怎麼使它恢復到前台來執行呢?執行fg命令,注意...
Linux Shell程式設計 一
bin bash echo hello world 定義自己的環境變數 tomecat home opt tomcat 輸出變數 export tomcat home echo 程序號 後台方式執行positionpara.sh positionpara.sh echo 最後乙個程序號 echo 執...