Shell基礎之 變數 比較 測試

2021-09-23 23:21:22 字數 2039 閱讀 3605

一、變數

環境變數、位置變數、預定義變數

1、環境變數

env   #檢視環境變數
2、位置變數

vi location.sh

#!/bin/bash

sum=`expr $1 + $2`

echo

"$1 + $2 = $sum"

./location 12

34#則12為第乙個位置變數賦值為$1,32為第二個為$2。location為預定義變數

3、預定義變數

$#

#表示命令行中位置引數的個數

$* #表示所有位置引數的內容

$? #表示執行後的返回狀態,0為正常

$0#表示當前執行的指令碼或程式名稱

vi yu.sh

#!/bin/bash

name=bak-`date +%y%m%d`.tar.gz

tar zcf $name $* & >/dev/null

echo

"execute $0 script"

echo

"complete $# object"

echo

"content is $*"

二、條件測試操作

1、檔案測試

-d #判斷是否為directory    [ -d /etc ] && echo "this is a directory"

-e #判斷是否exist [ -e /var/log/messages ] && echo "exist"

-f #判斷是否為file [ -f /etc/passwd ] && echo "this is a file"

-r #判斷是否有read [ -r read ] && echo "premission is a read "

-w #判斷是否有write [ -w write ] && echo "premission is a write"

-x #判斷是否有execute [ -x execute ] && echp "premission is a execute"

-l #判斷是否為link

-b #判斷是否為black [ -b /dev/sr0 ] && echo "this is a block"

-c #判斷是否為chatset [ -c /dev/vcsa ] && echo "this is a charset"

2、整數值比較

-eq  #1等於2

-ne #1不等於2

-gt #1大於2

-lt #1小於2

-ge #1大於或等於2

-le #1小於或等於2

user=`who | wc -l` #$user為3

[ $user -lt 4 ] && echo yes

3、字串比較

=   #第乙個字串等於第二個字串

!= #第乙個字串不等於第二個字串

-z #檢查字串是否為空,對於未定義或賦予空值的變數視為空串

[ $lang = en_us.utf-8 ] && echo yes || echo no

4、邏輯測試

&&  #"而且",當前面和後面兩個條件都成立時,整個測試命令的返回值才為0

|| #"邏輯或",只要前面和後面兩個條件中有乙個成立時,整個測試命令的返回值即為0

! #"邏輯否",只有當指定的條件不成立時,整個測試命令的返回值才為0

[ $lang != zh_cn.utf-8 ] && [ $user != 100 ] && echo yes ##$user=3

[ $lang != zh_cn.utf-8 ] || [ $user != 3 ] && echo yes

shell入門之變數測試

格式 test 測試條件 字串測試 注意空格 test str1 str2 測試字串是否相等 test str1 str2 測試字串是否不相等 test str1 測試字串是否不為空 test n str1 測試字串是否不為空 test z str1 測試字串是否為空 整數測試 test int1 ...

Shell之變數操作

1.定義變數 為了避免與環境變數衝突,一般用小寫 如pp mydql,kdkfeof 第二賦值方案 呼叫變數使用 符號 變數疊加 2.輸出採用echo,如上圖所示 3.變數分類 自定義變數和環境變數。4.檢視 set 檢視所有變數及其值 5.刪除變數 unset 變數名,如 6.作用範圍 自定義變數...

Shell指令碼之 變數

與編譯型語言不同,shell指令碼是一種解釋型語言。執行這類程式時,直譯器 interpreter 需要讀取我們編寫的源 source code 並將其轉換成目標 object code 再由計算機執行。linux預設的指令碼解析器是bash。參考資料 第乙個shell指令碼 下面演示我們的第乙個s...