shell易混淆規則
read 用於交互場景 就是把用戶輸入的信息給某個變量 -p就是會在屏幕上顯示的信息
格式:read -p “提示信息” 變量名
#!/bin/bash
echo -n "Enter your name:" //參數-n的作用是不換行,echo默認是換行
read name //把鍵盤上輸入的賦值給name
echo "hello $name,welcome to my program" //顯示信息
exit 0 //退出shell程序。
上面的腳本可以簡寫成下面的腳本::
read -p "Enter your name:" name 先給個變量
echo "hello $name, welcome to my program"
exit 0
https://blog.csdn.net/zhaoyw2008/article/details/8052604
變量:靈活完成工作 接收用戶的參數
#var1=centos #把centos賦值給var1
變量要求
等號兩邊不能有空格
開頭不能是數字 不要用關鍵字和特殊字符
可以用字母/數字/下劃線 abx_123
取消變量
unset 取消變量設置 unset SCHOOL
或退出定義變量的shell環境
變量類型
環境變量
PWD PATH USER LOGNAME SHELL HOME PS1 PS2
預定義變量
- echo $0 //腳本的名稱
- echo $1 //第一個參數
- echo $2 //第二個參數
- echo $* //所有參數
- echo $# //有幾個參數
- echo $$ //當前進程的進程號
- echo $? //上一個程序的返回狀態碼 0表示正常 1或其他值表示異常
ps:
9.$()等同於`` 先執行
10.$(()) $[] 整數運算
位置變量
$1 $2
sh -x調試腳本 看到執行了哪些命令
全局環境變量/etc/profile 用戶文件為~/.bash_profile
‘’裏面是啥就是啥
``和$()是需要先執行的 裏面放命令
運算
類別 + - * / %(取余)
整數運算 1.expr 2.$[]、 $(())
格式:expr 整數1 運算符 整數2 需要轉義*
$[整數1 運算符 整數2]
#expr 1 + 2 、expr $x + $y
#echo $((x-21)),$[x*21] $(()) $[] 運算符兩側可以省空格 乘法操作省轉義 引用變量省$ 可以結合echo
22,903
變量的自增/自減
格式:
#i=43
#echo $[i++]
或#let i++;echo $i
i++ i=i+1
i-- i=i-1
i+=2 i=i+2
i-=2 i=i-2
i=2 i=i2
i%=2 i=i%2
i/=2 i=i/2
小數運算 bc
格式:
#echo “運算”|bc
#bc
12.3456.78
scale=4定義小數位數
#echo “$A56.789”|bc
#echo "scale=4;$A*56.789;5/4"|bc 多個表達式分號間隔
比較
小數值比較 > < >= <= == !=
格式:echo “數值 比較符 數值” #表達式成立返回1 不成立返回0
#A=12.34;B=34.56
#echo "$A > $B"|bc #A是否小於B
整數值比較
格式:[數值 操作符 數值]
-eq 等於equal
-ne 不等於 not equal
-ge 大於等於greater equal
-le 小於等於 lesser equal
-gt 大於greater than
-lt 小於lesser then
檢查已登錄用戶數 是否不超過5個
#who |wc -l
#[$(who|wc -l) -le 5] && echo "OK"
$()先執行
文件狀態測試
格式:[操作符 文件或目錄] #表達式不成立返回1成立返回0
-e 判斷對象是否存在exist
-d 判斷對象是否為目錄directory
-f 判斷對象是否為一般文件file
-r 判斷對象是否有讀權限
-w 寫權限
-x 執行權限
#[ -d /etc/hosts ]
#echo $?
1
字符串比較
格式:[字符串1 操作符 字符串2]
== 兩個字符串相同
!= 兩個字符串不同
#[$USER == "root"] && echo "超級用戶"
邏輯分隔
格式:命令1 操作符 命令2
[條件1] 操作符 [條件2]
&& then
|| or
例:
當前用戶為root 且位於root目錄下
#[$USER == "root"]&&[$PWD == "/root"]
#[$? -eq 0] && echo YES
當/opt/testdir目錄不存在時 創建該目錄
#[ -d "/opt/testdir" ]||mkdir /opt/testdir
shell易混淆規則