shell指令碼一般是用來幫助管理員來管理自己的伺服器的 所以一般shell指令碼是放在自己的家目錄序下面的,供自己來呼叫管理
1.首先 在自己家目錄下面建立目錄 mkdir shell
2.編寫shell指令碼的時候 首行都是以#!/bin/bash開頭的 ,在讀取的時候 會按照shell的語法來解析該指令碼!
3 shell指令碼寫完了之後要給指令碼賦予執行許可權chmod 755 ./test.sh
4.現在就可以執行shell指令碼了 執行的時候可以寫絕對路徑也可以寫相對路徑
1)./test.sh
2)/root/shell/test.sh
shell 指令碼的語法和一些簡單例子
1 變數; 語法 aa=123 =兩邊不能有空格,在shell指令碼之中所有的變數預設都是字串的,定義變數的時候不需要$ 但是檢視變數的時候需要加上$
變數也可以寫成aa=$(ls /dev) echo $aa 或者 aa=123 aa="$aa"456 echo $aa --->123456變數也可以累加,一邊情況之下變數都是鏈結起來的,
如果需要把值加起來的話aa=123,bb=234 cc=$(( $aa + $bb )) echo $cc
2 位置引數變數 $0 表示的是變數自己 $1 表示的是第乙個引數, $2 表示的是第二個引數 ,$3 表示的是第三個引數 總共後面可以有九個引數 也就是$9
#!/bin/bash
echo"the command is $0"
echo"canshu1 is $1"
echo"canshu2 is $2"
3 預定義變數 $? 表示返回的上乙個命令的返回值 為0表示上一次命令執行成功,不為0表示執行失敗! $# 統計命令之後的引數個數 ,,$* 返回所有的引數
$n 位置引數變數
#!/bin/bash
#名字為:canshu.sh
echo"canshu zongshu $#"
echo"canshu liebiao: $*"
echo $?
三 shell中常用命令
1 行提取命令grep -v 反向提取 -n 顯示行號
grep -n "[^a-z]hen" test_rule.txt利用正規表示式來查詢 test_rule.txt 裡面的不是以小寫字母開頭的的hen字串
grep 「\.$」 test.txt匹配以點結尾的行
2 列提取命令 cut -d 「分隔符」 -f 提取列 檔名 如:cut-d ":" -f 1,3 /etc/passwd
more/etc/passwd | grep "/bin/bash" | cut -d ":" -f 1,3這裡cut後面就不需要加上檔名了
3 echo -e 「輸出內容」 -e 是表示格式化列印內容
4 條件測試 test -e 檔名 測試檔案是否存在,存在為真 [ -e 檔名 ] 注意:的左右兩側必須加空格
例如test-e test.txt && echo yes || echo no
test -f 檔名 判斷是否是普通檔案#如果是檔案的話,返回0,若是目錄返回非0
test -d 檔名 判斷是否為目錄
test -b 檔名 判斷是否為塊裝置檔案
test -c 檔名 字元裝置檔案
test -r 檔名 判斷是否有可讀許可權
test -w 檔名 可寫
test -x 檔名 執行
test -s 檔名 判斷是否為非空白,有內容為真
Linux Shell指令碼基礎
shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...
Linux shell指令碼基礎
ls 列出目錄下的清單 cat 連線顯示檔案內容 less more 分頁顯示檔案內容,建議使用less,相比於more更方便 head 顯示檔案頭部,可指定行數,預設顯示10行 tail 顯示檔案尾部,可指定行數,預設顯示10行 file 顯示檔案型別 wc 檢視檔案或統計資訊 find 查詢檔案...
linux shell指令碼基礎 3
6.函式 function name 注意 必須在呼叫乙個函式之前先對它進行定義,不存在前向宣告 當乙個函式被呼叫時,指令碼程式的位置引數 1,2等 會被替換為函式的引數。這也是讀取傳遞給函式的引數的辦法。當函式執行完畢後,這些引數會恢復為它們先前的值。可以通過return命令讓函式返回數字值 注意...