shell腳本常用文件判斷命令


#! /bin/sh

#輸出提示信息
echo "Please enter a number:"
#從鍵盤讀取用戶輸入的數字
read num
#如果用戶輸入的數字大於10
if [ "$num" -gt 10 ]; then
#輸出大於10的提示信息
echo "The number is greater than 10."
#否則
else
#輸出小於或者等於10的提示信息
echo "The number is equal to or less than 10."
fi

 

 

-eq 等於,如:if [ "$a" -eq "$b" ] 
-ne 不等於,如:if [ "$a" -ne "$b" ] 
-gt 大於,如:if [ "$a" -gt "$b" ] 
-ge 大於等於,如:if [ "$a" -ge "$b" ] 
-lt 小於,如:if [ "$a" -lt "$b" ] 
-le 小於等於,如:if [ "$a" -le "$b" ] 
大於(需要雙括號),如:(("$a" > "$b")) 
>= 大於等於(需要雙括號),如:(("$a" >= "$b")) 
小數據比較可使用AWK 
字符串比較 
= 等於,如:if [ "$a" = "$b" ] 
== 等於,如:if [ "$a" == "$b" ],與=等價 

 

 

if [ $? -eq 0 ]該語句是什么含義?
$0: shell或shell腳本的名字
$*:以一對雙引號給出參數列表
$@:將各個參數分別加雙引號返回
$#:參數的個數
$_:代表上一個命令的最后一個參數
$$:代表所在命令的PID
$!:代表最后執行的后台命令的PID
$?:代表上一個命令執行后的退出狀態

 

$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1是傳遞給該shell腳本的第一個參數
$2是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表

 

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
 
#!/bin/sh
# 意if[]
if["$SHELL"="/bin/bash"];then
echo"yourloginshellisthebash\n"
echo"SHELLis:$SHELL"
else
echo"yourloginshellisnotbashbut$SHELL"
fi
# [-f"somefile"]:
# [-x"/bin/ls"]:/bin/ls
# {-n"$var"}:斷$var
# ["&a"="$b"]:斷$a和$b
[-f"/etc/shadow"]&&echo"Thiscomputerusesshadowpasswords"
if[-f"/etc/shadow"];then
echo"使符"
else
echo"有"
fi
 
 

 

 

1、在中括號中,判斷變量的值, 加不加雙引號的問題?
-z 判斷 變量的值,是否為空; zero = 0

- 變量的值,為空,返回0,為true
- 變量的值,非空,返回1,為false
-n 判斷變量的值,是否為空 name = 名字
- 變量的值,為空,返回1,為false
- 變量的值,非空,返回0,為true
pid="123"
[ -z "$pid" ] 單對中括號變量必須要加雙引號
[[ -z $pid ]] 雙對括號,變量不用加雙引號

[ -n "$pid" ] 單對中括號,變量必須要加雙引號
[[ -z $pid ]] 雙對中括號,變量不用加雙引號
2、多個條件判斷,[] 和 [[]] 的區別?
2.1:[[ ]] 雙對中括號,是不能使用 -a 或者 -o的參數進行比較的;
&& 並且 || 或 -a 並且 -o 或者
[[ ]] 條件判斷 && 並且 || 或


[[ 5 -lt 3 || 3 -gt 6 ]] 一個條件滿足,就成立 或者的關系


[[ 5 -lt 3 ]] || [[3 -gt 6 ]] 寫在外面也可以


&& 必須兩個條件同時滿足,和上述一樣,這里想說明的問題的是:

[[ 5 -lt 3]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]] 
[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]] 
-a 和 -o就不成立了,是因為,[[]] 雙對中括號,不能使用 -o和 -a的參數
直接報錯:

2.2 [ ] 可以使用 -a -o的參數,但是必須在 [ ] 中括號內,判斷條件,例如:
[ 5 -lt 3 -o 3 -gt 2 ] 或者條件成立
[5 -lt 3 ] -o [ 3 -gt 2] 或者條件, 這個不成立,因為必須在中括號內判斷

如果想在中括號外判斷兩個條件,必須用&& 和 || 比較
[5 -lt 3 ] || [ 3 -gt 2] 
[5 -gt 3 ] && [ 3 -gt 2] 成立

相對的,|| 和 && 不能在中括號內使用,只能在中括號外使用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM