shell中的test命令

2021-10-02 19:47:58 字數 4186 閱讀 6774

test是shell中的內建命令,用來檢測某個條件是否成立,test命令通常和if語句一起使用

test命令通常可以在數值、字串、文字這三個方面進行檢測

test命令可以簡寫為,用法[ expression ]

比較

描述n1 -eq n2

n1和n2是否相等

n1 -ge n2

n1是否大於等於n2是否相等

n1 -gt n2

n1是否大於n2是

n1 -le n2

n1是否小於等於n2

n1 -lt n2

n1是否小於n2

n1 -ne n2

n1是否不相等n2

#!/bin/bash

val=10

if[ $val1 -eq 10 ]

then

echo 'equal'

fi

執行結果:equal

#!/bin/bash

val=`echo "scale=4;10\3 | bc"`

if[ $val1 -qt 2 ]

then

echo 'yes'

fi

執行結果:報錯 在test命令中不能使用浮點數

比較

描述str1 = str2

檢查str1是否和str2相同

str1 != str2

檢查str1是否和str2不同

str1 > str2

檢查str1是否比str2大

str1 < str2

檢查str1是否比str2小

-n str1

檢查str1的長度是否非0

-z str1

檢查str1的長度是否為0

#!/bin/bash

testing=root

if [ $user=$testing ]

then

echo "welcome $tesing"

fi

執行結果:welcome root

val1=baseball

val2=hockey

if [ $val1 > $val2 ]

then

echo "yes"

else

echo "no"

執行結果:會出現hockey檔案

原因為:大小寫符號必須轉義,否則shell會把他們當做重定向符號

val1=baseball

val2=hockey

if [ $val1 \> $val2 ]

then

echo "yes"

else

echo "no"

執行結果:no

這是由於按照asci碼進行比較,c大於b

#!/bin/bash

val1='testing'

val2=' '

if [ -n "$val1" ]

then

echo "not empty"

else

echo "empty"

fi

執行結果:not empty

#!/bin/bash

val1='testing'

val2=' '

if [ -z "$val2" ]

then

echo " empty"

else

echo " not empty"

fi

執行結果:empty

比較

描述-d file

檢查file是否存在並且為乙個目錄

-e file

檢查file是否存在

-f file

檢查file是否是存在並且為乙個檔案

-r file

檢查file是否是存在並且可讀

-s file

檢查file是否是存在並且非空

-w file

檢查file是否是存在並且可寫

-x file

檢查file是否是存在並且為可執行

-o file

檢查file是否是存在並且屬當前使用者所有

-g file

檢查file是否是存在並且預設組與當前使用者相同

file1 -nt file2

file1是否比file2新

file1 -nt file2

file1是否比file2舊

#!/bin/bash

if [ -d $home ]

then

echo "exist"

cd $home

ls -a

else

echo "no exist"

執行結果:exist,且檢視該目錄下的所有檔案

#!/bin/bash

if [ -e $home ]

then

echo "exist"

if [ -e $home/tesing ]

then

date >> $home/tesing

else

echo "creating this file"

date > $home/testing

else哦

echo "sorry"

file=test

touch $file

if [ -s $file ] ##判斷存在且非空

then

echo"exist and not empty"

else

echo "exist and empty"

fi

執行結果:exist and empty

file=test

touch $file

if [ -g $file ] ##

then

echo "same group"

else

echo "different group"

fi

執行結果:same group

if [ 01.sh -nt 02.sh ]  ##

then

echo "01.sh比02.sh新"

else

echo "01.sh比02.sh舊"

fi

執行結果:echo "01.sh比02.sh舊

if [ 01.sh -ot 02.sh ]  ##

then

echo "01.sh比02.sh舊"

else

echo "01.sh比02.sh新"

fi

執行結果:echo "01.sh比02.sh舊

#!/bin/bash

if [ -d $home ] &&[ -w $home/testing ]

then

echo "exist and can write"```

fi

執行結果: exist and can write

總結:

Shell中的內建命令 test

比較 描述n1 eq n2 檢查n1是否與n2相等 n1 ge n2 檢查n1是否大於或等於n2 n1 gt n2 檢查n1是否大於n2 n1 le n2 檢查n1是否小於或等於n2 n1 lt n2 檢查n1是否小於n2 n1 ne n2 檢查n1是否不等於n2 比較描述 str1 str2 檢查...

shell基礎命令 test命令

test 相當於test命令 判斷a和b的值是否相等 test a b echo yes echo no a b echo yes echo no 等於 不等於 eq等於 ne不等於 le小於等於 lt小於 ge大於等於 gt大於 a的值為1 b的值為2 root rhel8 mnt a b ech...

(十)shell語法中的test命令用法

test命令用法。功能 檢查檔案和比較值 1 判斷表示式 if test 表示式為真 if test 表示式為假 test 表示式1 a 表示式2 兩個表示式都為真 test 表示式1 o 表示式2 兩個表示式有乙個為真 2 判斷字串 test n 字串 字串的長度非零 test z 字串 字串的長...