shell指令碼
shell指令碼的工作方式有兩種:
1.互動式:使用者輸入一條命令就立即執行。
2.批處理:由使用者事先編寫好乙個完整的shell指令碼,shell會一次性執行指令碼中諸多的命令。
編寫簡單的shell指令碼
#!/bin/bash -- shell指令碼固定開頭行,#!是用來告訴系統使用哪種shell直譯器來執行該指令碼,
pwd --要執行的命令
ls -al
使用bash example.sh命令執行指令碼,會有如下輸出資訊:
/opt/bashscript
總用量 4
drwxr-xr-x. 2 root root 24 5月 17 19:19 .
drwxr-xr-x. 3 root root 40 5月 17 18:53 ..
-rwxr--r--. 1 root root 51 5月 17 19:19 example.sh
接收使用者引數
在shell指令碼中可以設定接受外部引數的變數,
$0:對應指令碼檔案的名稱。
$#:對應總共接受了多個個引數。
$*:對應所有的引數值。
$1,$2,$3:對應每個位置的引數值。
在example.sh 輸入如下命令(必須用雙引號,單引號解析不出來):
echo "當前指令碼名稱為$0"
echo "總共有$#個引數,分別是$*"
echo "第乙個引數為$1,第二個引數為$2,第三個引數為$3"
執行命令:bash example.sh one two three
輸出資訊如下:
當前指令碼名稱為example.sh
總共有3個引數,分別是one two three
第乙個引數為one,第二個引數為two,第三個引數為three
判斷使用者的引數
系統在執行mkdir命令建立目錄的時候回判斷使用者輸入的資訊,判斷目錄是否存在,存在就會報錯,shell指令碼中的條件測試語法可以判斷表示式是否成立。成立則返回0,否則返回其他隨機數。
測試語句格式 [ 條件表示式 ]
按照測試物件來劃分,條件測試語句有四種:
1.檔案測試語句
2.邏輯測試語句
3.整數值比較語句
4.字串比較語句
檔案測試所用的引數:
-d :測試檔案是否為目錄型別
-e :測試檔案是否存在
-f :判斷是否為一般檔案
-r :測試當前使用者是否有許可權讀取
-w :測試當前使用者是否有許可權寫入
-x :測試當前使用者是否有許可權執行
執行命令[ -d /opt/bashscript ] 判斷是否為目錄型別,然後通過shell內設的$?變數顯示上乙個命令的執行後的返回值來進行判斷。
[root@linux bashscript]# [ -d /opt/bashscript ]
[root@linux bashscript]# echo $?
0執行命令[ -f /opt/bashscript ] 判斷是否為一般檔案,然後通過shell內設的$?變數顯示上乙個命令的執行後的返回值來進行判斷。
[root@linux bashscript]# [ -f /opt/bashscript ]
[root@linux bashscript]# echo $?
1邏輯語句是對測試結果進行邏輯分析,根據測試結果可以實現不同的效果,shell中邏輯運算子與「&&」表示當前面的命令執行成功後才會執行後面的命令,判斷檔案是否存在
[ -e /opt/bashscript ] && echo "存在"
[root@linux bashscript]# [ -e /opt/bashscript ] && echo "存在"
存在邏輯運算子或」||「表示前面的命令執行失敗後才會執行後面的命令,判斷使用者是否是root
[ $user = root1 ] || echo "user"
[root@linux bashscript]# [ $user = root1 ] || echo "is root"
is root
整數運算子僅是對數字的操作,不能將數字,字串與檔案等內容一起操作。而且不能直接使用 > ,<,=等這些符號來判斷。在linux中這些符號與命令符衝突。
整數比較運算子:
-eq :是否等於
-ne :是否不等於
-gt :是否大於
-lt :是否小於
-le :是否小於或等於
-ge :是否大於或等於
測試10是否大於10
[root@linux bashscript]# [ 10 -eq 10 ]
[root@linux bashscript]# echo $?
0[root@linux bashscript]# [ 10 -lt 10 ]
[root@linux bashscript]# echo $?
1字串比較語句使用者判斷測試字串是否為空值,或兩個字串是否相同。經常用來判斷某個變數是否未被定義。
字串比較運算子:
= :比較字串內容是否相同
!= :比較字串內容是否不同
-z :判讀字串內容是否為空
[root@linux bashscript]# [ -z $string ]
[root@linux bashscript]# echo $?
0[root@linux bashscript]# echo $lang
zh_cn.utf-8
[root@linux bashscript]# [ $lang != "en.us" ] && echo 'not en.us'
not en.us
Linux操作命令(六) wc grep
本次實驗將介紹 linux 命令中 wc 和 grep 命令的用法。課程使用的實驗環境為 ubuntu linux 14.04 64 位版本。實驗中會用到程式 wc 命令是乙個統計的工具,主要用來顯示檔案所包含的行 字和位元組數。wc 命令是 word count 的縮寫。1 命令格式 wc 選項 ...
(六)Linux常用操作命令
一 目錄 檔案 顯示 建立 切換 ls 顯示檔案或目錄 l 列出檔案詳細資訊l list a 列出當前目錄下所有檔案及目錄,包括隱藏的a all mkdir 建立目錄 p 建立目錄,若無父目錄,則建立p parent touch 建立空檔案 cd 切換目錄 二 拷貝 剪下 移動 刪除 cp 拷貝 m...
Linux基本操作命令
首先介紹乙個名詞 控制台 console 它就是我們通常見到的使用字元操作介面的人機介面,例如dos。我們說控制台命令,就是指通過字元介面輸入的可以作業系統的命令,例如dos命令就是控制台命令。我們現在要了解的是基於linux作業系統的基本控制台命令。有一點一定要注意,和dos命令不同的是,linu...