printf
printf "value=%s\n" "${value}"
read
printf“0”
read value
printf“這個(gè)值=%s\n” "${value}"
1)用法:從鍵盤讀入一個(gè)值猖辫,賦給read后面的變量
2)read盡量不要使用同時(shí)輸入多個(gè)值售貌,
比如:read value1 value2
%m.nf:右對(duì)齊m.nf:左對(duì)齊
expr
a=1
b=2
c=expr $a \* $b
echo "${c}"
進(jìn)行基本運(yùn)算
運(yùn)算符
1)算數(shù)運(yùn)算符 + - * / % ++ -- += -= /=
注意點(diǎn):的數(shù)據(jù)
運(yùn)算符左右兩邊都有空格
取結(jié)果集 注意乘法 *必須要通過\轉(zhuǎn)義,不然會(huì)出錯(cuò) $()也是和
一樣的取結(jié)果集丙号,不但可以取整數(shù)先朦,還可以取shall命令的結(jié)果集,比如
a=$(ls)
echo "${a}"
let 關(guān)鍵字
a=1
b=2
let c=a*b
echo "${c}"
整數(shù)之間的關(guān)系運(yùn)算符 echo 用之前加個(gè)
< > ==或者= !=
if語(yǔ)句語(yǔ)法格式
if【 a -ge b 】
then
語(yǔ)句體
fi
-gt > -ge >= -lt < -le <= -eq == -ne !=
g: greater t:then e: equal l:less n:not
if【 a -ge b 】
then
語(yǔ)句體
elif [ a -gt b ]
then
語(yǔ)句體
fi
else 可以沒有 如果有else 必須放在最后面
else 下面沒有then
字符串運(yùn)算符
=:判斷字符串是否相等
犬缨!=:判斷字符串是否不相等
-z(zero:判斷字符串是否為空喳魏、不存在或者字符串為空格
文件運(yùn)算符
-d 表示判斷是否是目錄文件
-f 表示判斷是否是普通文件
-r 表示判斷是否可讀
-w
-x
-e:exist,判斷文件是否存在
案例:
file="1.sh"
if [ -d $file ]
then
echo "目錄文件"
else
echo "不是目錄文件"
fi
case
case 變量 in
值1)
語(yǔ)句體1
怀薛;刺彩;
值2)
語(yǔ)句體2
;枝恋;
)
語(yǔ)句3
;三幻;
esac
注意點(diǎn):
1 結(jié)束標(biāo)志 esac,
2 如果前面的值都不符合念搬,這時(shí)會(huì)來到)
3 )可以不寫,但是寫的話只能放到最后
4 每一個(gè)分支結(jié)束之后都有朗徊;;
數(shù)組
1)數(shù)組初始化一個(gè)一個(gè)變量進(jìn)行初始化爷恳,可以間隔賦值,還可以不從0位置開始
比如array【1】=17
array【5】=1
2)數(shù)組整體賦值
array=(1 2 3 4 hello)
數(shù)組元素訪問
${數(shù)組名【下標(biāo)】}
遍歷數(shù)組里面所有的元素
${數(shù)組名【】}
${數(shù)組名【@】}
while [ ]
do
語(yǔ)句體
done
參數(shù)
./xx.sh
$0:代表執(zhí)行的文件 ./xx.sh
$1:代表執(zhí)行的第一個(gè)參數(shù)
$2:代表執(zhí)行的第二個(gè)參數(shù)
$n:代表執(zhí)行的第n個(gè)參數(shù)
$#:代表執(zhí)行的參數(shù)個(gè)數(shù)温亲,不包含命令本身
sh 1.sh
1.判斷文件是否存在
2.如果存在杯矩,判斷文件是否是普通文件
3.如果是普通文件,修改權(quán)限
4.執(zhí)行
5.讓命令在全局有效