2. 指令碼基礎
3. 訓練
變數即可以變化的量
布林型
單引號與雙引號的區別
var_name=value //本地變數,作用域為當前shell程序。對當前shell外的其它shell程序,包括當前shell的父shell、子shell程序均無效
local var_name=value //區域性變數,作用域為當前**段,常用於函式
export var_name=value //作用域為當前shell程序及其子程序
$1,$2,$3,.... //用來引用指令碼的引數
shift [num] //位置變數使用完以後退出,後面的引數向前推進
$# //是傳給指令碼的引數個數
$0 //是指令碼本身的名字
$! //是shell最後執行的後台process的pid
$@ //是傳給指令碼的所有引數的列表
$* //是以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過9個
$$ //是指令碼執行的當前程序id號
$? //是顯示上條命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
path
shell
uidhistsize
home
pwdhistfile
ps1
readonly var_name=value //不能修改值,不能銷毀,只能等shell程序終止時隨之消亡
按實際需要,結合命令流程控制機制實現的源程式。說白點就是命令的堆砌。
程式執行以後有兩類返回值:
程式執行的結果
程式狀態返回**(0-255)
0:正確執行
1-255:錯誤執行,1、2、127系統預留,有特殊意義
bash如何測試指令碼是否有錯誤?報錯後如何排查?
bash -n scriptname //檢查指令碼是否有語法錯誤
bash -x scriptname //單步執行,檢查指令碼錯在**
禁止將未成功執行過的**直接寫進指令碼
指令碼中的命令一定要用絕對路徑
a=3
b=6let c=$a+$b //let 算術運算表示式
c=$[$a+$b] //$[算術運算表示式]
c=$(($a+$b)) //$((算術運算表示式))
c=`expr $a + $b` //expr 算術運算表示式,表示式中各運算元及運算子之間要有空隔,而且要使用命令引用
邏輯與:&&
第乙個條件為假時,第二個條件不用再判斷,最終結果已經有
第乙個條件為真時,第二個條件必須得判斷
邏輯或:||
前乙個命令的結果為真時,第二個命令就不執行
前乙個命令的結果為假時,第二個命令必須執行
統計當前系統乙個有多少個使用者並輸出
#!/bin/bash
fa='/etc/passwd'
num=$(cat $fa |wc -l)
for i in $(seq $num);do
name=$(head -$i $fa |tail -1 | awk -f: '')
id=$(head -$i $fa |tail -1 | awk -f: '')
username=$name
userid=$id
echo "hello $username your uid is $userid"
shift 1
done
echo "使用者一共有:$num"
#!/bin/bash
add=$[$1+$2]
subtract=$[$1-$2]
multiply=$[$1*$2]
divide=$(echo "scale=2;$1/$2" | bc)
echo "輸入整數:$1 $2"
echo "和為:$add"
echo "差為:$subtract"
echo "積為:$multiply"
echo "商為:$divide"
#!/bin/bash
scripts=/tmp/scripts
mk=/usr/bin/mkdir
cpnet=/usr/bin/cp
chowns=/usr/bin/chown
chmods=/usr/bin/chmod
$mk $scripts
cd $scripts
$cpnet -r /etc/pam.d ./test
useradd redhat
$chowns -r redhat.redhat test
$chmods -r o=--- test
#!/bin/bash
date
lstest=/tmp/lstest
mkdir $lstest
cd $lstest/
mkdir a1d b56e 6test
touch xy x2y 732
echo "列出當前目錄下以a,x或者6開頭的檔案或目錄"
ls |find [ax6]*
echo "列出當前目錄下以字母開頭,後跟乙個任意數字,而後跟任意長度字元的檔案或目錄"
ls |find [a-z][0-9]*
shell指令碼基礎
執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...
shell指令碼基礎
shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...
Shell指令碼基礎
1 shell是使用者與核心進行互動操作的一種介面,目前最流行的shell稱為bash shell 2 shell也是一門程式語言 解釋型的程式語言 即shell指令碼 3 乙個系統可以存在多個shell,可以通過cat etc shells命令檢視系統中安裝的shell,不同的shell可能支援的...