1. 程式人生 > >shell易混淆規則

shell易混淆規則

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程序。
上面的腳本可以簡寫成下面的腳本::

#!/bin/bash
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
預定義變量

  1. echo $0 //腳本的名稱
  2. echo $1 //第一個參數
  3. echo $2 //第二個參數
  4. echo $* //所有參數
  5. echo $# //有幾個參數
  6. echo $$ //當前進程的進程號
  7. 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 “$A
56.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易混淆規則