1.3 shell程式設計運算子 退出狀態
運算子:
+ - * / %
執行運算:
1.$(( ab) )
可以有空格
裡面的運算子不需要轉義
如果和字串相加,字串的變數預設為0
2.expra+b
數字兩遍必須有空格
裡面的運算子需要轉義 轉義符
不支援數字和字串相加
不支援浮點數運算
3. 使用方括號
echo $[ab]
echo [a+
b]可以
直接呼叫
變數的值
,無需添
加[a+b] 可以直接呼叫變數的值,無需新增
[a+b]可
以直接調
用變數的
值,無需
新增fuhao
可以有空格
裡面的運算子需不要轉義
不支援浮點數運算
以上三種都可使用變數
浮點數運算:
bc //linux自帶的計算器
//支援變數運算
scale=4 //指定小數點後面保留4位
如何應用到指令碼裡:
借用管道符號
運算多行:
d=bc << eof d=$ (bc << eof 1+2 1+2 3+4 3+4 5*6 5*6 eof eof
)
例子:#vim expr. sh
#!/bin/bash
echo 「scale=5; 10/ 3」 | bc
a=5.1
b=1.2
c=3d =bc << eof e =($a + $b) f =( $a-$c ) e+f eof
echo $d
`` 和 $ (命令)
//效果是一樣的
退出狀態
檢視上乙個命令執行的退出狀態
返回值為0時,代表命令執行成功
非0的正整數時,執行不成功
0-255
exit=$ (echo $?)
0 命令成功結束
1 一般性未知錯誤
2 不適合shel1的命令
126 命令不可執行
127 命令未找到
128 無效的退出引數
130 通過ctrl+c終止的命令
255 正常範圍之外的退出狀態碼
狀態碼是可以自己定義的:0-255
300-255=45
exit1=4
exit2=5
exit3=6
第1行echo $exit1
第2行第3行
exit $變數名
//自定義返回值
算術擴充套件和let進行算術運算
算術擴充套件
可以對算術表示式求值並替換成所求得的值
看一下格式: $(( 算術表示式))
注意:算術表示式只能是整數,不能對浮點數進行算術運算
let運算
運算不能有空格
若非要有看空格怎麼辦?用雙引號引起來!
shell指令碼程式設計 變數補充 if條件判斷
變數的型別:
字串 數值 布林型別:true false null
shell中指定變數的型別: declare
declare:
內建命令
用來宣告和修改變數的屬牲(唯讀–readonly-- r)
//不能修改包括不能刪除
例子:
設定為數值變數:
// 只能儲存數值
// 不能為小數,如果存小數,會只保留整數
// 不能存字串型別,存字串值顯示為0
例子檢視變數的屬性和值:
# declare -p 變數名
// declare -i a =「10」
陣列:乙個變數對應乙個值: a =10
乙個變數對應多個值:
linux =(centos debain suse redhat)
當你想要定義多個值用括號括起來裡面要空格分開
檢視陣列的值:
# echo $
//下標 從前往後從0開始計數
//從後往前從-1開始計數
顯示所有內容:
# echo $
在已有的陣列中新增:
# linux[4]=febora
//注意:(不能跳過陣列下標去新增加陣列的值,會出現為空)
在已有的陣列上更改:
# linux[0]=
例子if條件判斷、
語法結構:
if 命令/判斷語句
then
執行語句
fi 結束
或者if command ; then
執行語句
fiif 5>2
then
echo 「you are ok」
fiif pwd(顯示當前目錄)
#!bin/bash
//測試if開始的語句
if pwd
then
echo 「nihao」
fi/root
nihao
//執行了if中pwd的命令,由於狀態碼是0,又執行了then中的語句
#sh ifone.sh
if條件判斷乙個使用者是否正在當前系統上使用,如果是,顯示在使用,
並列出此家目錄的資訊。
#vim test.sh
#!bin/bash
#useradd cml
#/etc/passwd
username =cml
if grep use
rnam
e/et
c/pa
sswd
then
echo
"ok"
ls−a
/hom
e/
username /etc/passwd then echo "ok" ls -a /home/
userna
me/e
tc/p
assw
dthe
nech
o"ok
"ls−
a/ho
me/username/
fi公升級指令碼:
使用者從鍵盤輸入使用者的名字,然後進行查詢
#!/bin/bash
read -p "please input your username:"username
if grep use
rnam
e/et
c/pa
sswd
then
echo
"ok"
ls−a
/hom
e/
username /etc/passwd then echo "ok" ls -a /home/
userna
me/e
tc/p
assw
dthe
nech
o"ok
"ls−
a/ho
me/username/
fi
shell程式設計 運算子 退出的狀態
shell程式設計 運算子 退出的狀態 運算子 執行運算 1.a b 可以有空格 裡面的運輸符號不需要轉義 如果和字串相加,字串的變數問哦0 2.expr a b 數字兩邊必須有空格 裡面的運算子需要轉義 轉義符 不支援數字和字串相加 3.使用方括號進行運算 echo a b echo a b 可以...
Shell程式設計(運算子)
運算子 一 declare 命令 二 數值運算的命令 三 變數測試 一 declare命令 declare 選項 變數名 給變數設定型別屬性 取消變數的屬性型別 a 將變數宣告為陣列型 i 將變數宣告為整數型 x 將變數宣告為環境變數 r 將變數宣告為唯讀變數 p 顯示指定變數的被宣告的型別 dec...
shell程式設計(二)運算子
hell中的運算子可以實現變數的賦值 算術運算 測試 比較等功能,運算子是構成表示式的基礎。變數賦值 shell中使用 進行變數賦值,也可以用等號來改變或初值化乙個變數的值。在進行賦值時不用考慮變數的資料型別,這是shell中變數資料型別的特點決定的。算術運算子 是可以在程式中實現加 減 乘 除等數...