目錄
Shell 學習(二)
1 設置環境變量
1.1 基本語法
1)export 變量名=變量值 (功能描述:將shell變量輸出爲環境變量)
2)source 配置文件 (功能描述:讓修改後的配置信息立即生效)
3)echo $變量名 (功能描述:查詢環境變量的值)
我們來做個測試,在/etc/profile文件裏面新增一個環境變量
1.2 實踐
1) 在/etc/profile 文件中定義TOMCAT_HOME環境變量
#!/bin/bash
#定義一個自己的環境變量
TOMCAT_HOME=/opt/tomcat
export TOMCAT_HOME
2)查看環境變量TOMCAT_HOME的值
echo $TOMCAT_HOME
3)在另外一個shell程序中使用TOMCAT_HOME
#使用我們自定的環境變量
echo "tomcat_home=$TOMCAT_HOME"
#多行註釋 用法爲 :<<! !
注意:在輸出TOMCAT_HOME 環境變量前,需要讓其生效
source /etc/profile
2 位置參數變量
2.1 介紹
當我們執行一個shell腳本時,如果希望獲取到命令行的參數信息,就可以使用到位置參數變量。比如: ./myshell.sh 100 200 ,這個就是一個執行shell的命令行,可以在myshell 腳本中獲取到參數信息
2.2 基本語法
- $n (功能描述:n爲數字,$0代表命令本身,$1-$9 代表第一到第九個參數,十以上的 參數需要用大括號包含,比如${10})
- $* (功能描述:這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體)
- $@ (功能描述:這個變量也代表命令行中所有的參數,$@ 把所有的參數區分對待)
- $# (功能描述:這個代表代表命令行中所有參數的個數)
2.3 位置參數變量應用實例
案例:編寫一個shell腳本positionPara.sh ,在腳本中獲取到命令行的各個參數信息
#!/bin/bash
#獲取到各個參數
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "參數個數=$#"
執行
#賦予權限
chomd 744 ./positionPara.sh
./ positionPara.sh 30 60
3 預定義變量
3.1 基本介紹
就是shell 設計者事先已經定義好的變量,可以直接在shell腳本中使用
3.2 基本語法
- $$ (功能描述:當前進程的進程號(PID))
- $! (功能描述:後臺運行的最後一個進程的進程號(PID))
- $?(功能描述:最後一次執行的命令的返回狀態。如果這個變量的值爲0,證明上一個命令正確執行;如果這個變量的值爲非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了)
3.3 應用實例
在一個shell腳本中簡單使用一下預定義變量
#!/bin/bash
echo "當前的進程號=$$"
#後臺的方式運行 myShell.sh
./myShell.sh &
echo "最後的進程號=$!"
echo "執行的值=$?"
4 運算符
4.1 基本介紹
如何在shell中進行各種運算操作
4.2 基本語法
1) “$((運算式))” 或“$[運算式]”
2) expr m + n
#注意expr 運算符間要有空格
3) expr m - n
4) expr \*,/,% 乘,除,取
應用實例
案例1:計算(2+3)X 4 的值
- $((運算式))
#!/bin/bash #第一方式$() RESULT1=$(((2+3)*4)) echo "result1=$RESULT1"
- $[運算式]
#!/bin/bash
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"
- expr
#!/bin/bash
TEMP=`expr 2 + 3`
RESULT3=`expr $TEMP \* 4`
echo "result=$RESULT3"
- 案例2:請求出命令行的兩個參數[整數]的和
#!/bin/bash
SUM=$[$1+$2]
echo "SUM=$SUM"
5 條件判斷
判斷語句
5.1 基本語法
[ condition ](注意condition 前後要有空格)
#非空返回true,可使用$? 驗證(0爲true,>1 爲false)
5.2 應用實例
當[]這個裏面有數值的時候,則爲非空,爲真,就返回true。 []裏面沒有數值,就爲空,返回false
[ atguigu ] 返回true
- [] 返回false
[ condition ] && echo OK || echo notok 條件滿足,執行後面的語句
5.3 常用判斷條件
1) 兩個整數的比較
= 字符串比較
-lt 小於(less than)
-le 小於等於
-eq 等於
-gt 大於(greater than)
-ge 大於等於
-ne 不等於
2)按照文件權限進行判斷
-r 有讀的權限 tips: 判斷是否有權限, 就這麼寫就行了[ -r 文件 ]
-w 有些的權限
-x 有執行的權限
3)按照文件類型進行判斷
-f 文件存在並且是一個常規的文件
-e 文件存在
-d 文件存在並非是一個目錄
5.4 應用實例
案例1:“ok”是否等於“ok”
判斷語句:
#!/bin/bash
if ["ok"="ok"]
then
echo "等於"
fi
案例2:23是否大於22
判斷語句
#!/bin/bash
if[23 -gt 22]
then
echo "大於"
fi
案例3:/root/shell/aaa.txt 目錄中的文件是否存在
判斷語句
#!/bin/bash
if [-e /root/shell/aaa.txt]
then
echo "存在"
fi