1. 程式人生 > >linuxSHELL學習之數字比較、字串比較

linuxSHELL學習之數字比較、字串比較

1、test

test提供一種檢測if-then語句中不同條件的方法,如果test命令中列出的條件評估值為true,test
命令以0
推出狀態碼退出。
if test condition
then 
   commands
fi
test命令提供3類條件的評估:數值比較、字元比較、檔案比較
數值比較:
n1 -eq n2檢查n1是否等於n2         n1 -le n2檢查n1是否小於等於n2
n1 -ge n2檢查n1是否大於等於n2     n1 -lt n2檢查n1是否小於n2
n1 -gt n2檢查n1是否大於n2         n1 -ne n2檢查n1是否不等於n2
[

[email protected] ~]# cat t1.sh 
#!/bin/bash
#using numeric test comparisons
var1=10
var2=11
if [ $var1 -lt 5 ]   #注意這裡的test與“[”和“]”之間必須要有空格,否則會報錯的。
then
  echo "the test value $var1 is greater than 5"
fi

if [ $var1 -eq $var2 ]  #注意這裡的test與“[”和“]”之間必須要有空格
then
  echo "the values are equal"
else
  echo "the values are different"
fi

[[email protected] ~]# ./t1.sh 
the values are different
字串比較:
str1 = str2檢查str1與str2是否相同       str1 > str2檢查str1是否大於str2
str1 != str2檢查str1與str2是否不同      -n str1 檢查str1的長度是否大於0
str1 < str2檢查str1是否小於str2         -z str1 檢查str1的長度是否為0
[[email protected] ~]# cat t2.sh  --判斷相等否
#!/bin/bash
#testing string eguality
testuser=root
if [ $USER = $testuser ]
then 
  echo "welcome $testuser"
fi
[

[email protected] ~]# ./t2.sh 
welcome root
[[email protected] ~]# cat t3.sh   ---不等判斷
#!/bin/bash
#tesing string equality
testuser=oracle
if [ $testuser != root ]
then 
  echo "this is not $testuser"
else
  echo "welcome $testuser"
fi
[[email protected] ~]# ./t3.sh 
this is not oracle
字串順序:
*大於和小於符號一定要轉義,否則shell會將他們當做重定向符號,將字串值看作是檔名。
*大於和小於順序與在sort中不同
*test使用標準的ASCII排序,使用每個字母的ASCII數值來決定排序順序,sort命令使用為當前系統語言設定定義的排序順序。對於英語來說,當前設定指定小寫字母排在大寫字母之前。
[[email protected] ~]# cat t4.sh 
#!/bin/bash
#testing string sort order
var1=Testing
var2=testing
if [ $var1 \> $var2 ]     ---使用標準的ASSCI進行的比較
then
 echo "$var1 is greater than $var2"
else
 echo "$var1 is less than $var2"
fi

[[email protected] ~]# ./t4.sh 
Testing is less than testing
**if [ -n var1 ]判斷var1是否為非0值,if [ -z var1 ]判斷var1是否為0
[[email protected] ~]# cat t5.sh 
#!/bin/bash
#testing string length
var1=testing
var2=''
if [ -n $var1 ] 
then
  echo "the string '$var1' is not emppty" 
else
  echo "the  string '$var1' is empty"
fi

if [ -z $var2 ]
then
  echo "the string '$var2' is empty"
else
  echo "the string '$var2' is not empty"
fi
if [ -z $var3 ]
then
  echo "the string '$var3' is empty"
else
  echo "the string '$var3' is not empty"
fi

[[email protected] ~]# ./t5.sh 
the string 'testing' is not emppty
the string '' is empty
the string '' is empty

相關推薦

linuxSHELL學習數字比較字串比較

1、test test提供一種檢測if-then語句中不同條件的方法,如果test命令中列出的條件評估值為true,test 命令以0 推出狀態碼退出。 if test condition then     commands fi test命令提供3類條件的評估:數值比

Python學習路-變數字串函式

目錄 變數和型別 條件判斷 迴圈控制 函式 變數和型別 基本變數型別 整數 浮點數 字串 布林值 空值 函式 模組 型別* 自定義型別 變數定義  變數儲存在記憶體中的值。這就意味著在建立變數時會在記憶體中開闢一個空間。 基於變數的資料型別,

Python學習路-----小數字快取字串快取

快取介紹         為了增加程式的執行效率,Python3的直譯器中實現了小數字和字串快取的機制,小數字的緩衝範圍是[-5 ~ 256],字串的快取位數預設是20位。在Python程式中每次初始化一個新的變數就會在記憶體中開闢一塊空間來儲存這個變數,當變數不用的時候再回

String類(物件例項化字串比較物件池字串常量不可變更)

String的兩種例項化方式 直接賦值和傳統例項化: public class Stringob { public static void main(String[] args) { String str1="hello"; //直接賦值 str是一個物

C語言--字串拷貝字串查詢字串比較字串擷取

 在實際的應用當中,字元和字串的操作是最常用的技能。總結下來,提升能力。 一、字串拷貝 1、memcpy 2、strcpy 區別 二、字串查詢 三、字串比較 四、字串擷取 1、一種簡單而又機智的方法–strncpy  strncpy函

26 Java學習NIO和IO得比較

轉自:https://www.cnblogs.com/aspirant/p/8630283.html    一、概念      NIO即New IO(非阻塞IO),這個庫是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,

oracle學習to_number方法(字串數字

在查詢中排序時避免不了的,一般寫sql我們都會加排序欄位。 如果排序欄位是字串,那就有點麻煩。 比如一個數字欄位,本來應該設計成Integer型的,但設計成了varcher型。 那排序就有問題。數字的話,他會先拍最高位,再拍第2位。 比如8,12降序排序就是8,12而不是

JSP中EL表示式的比較符號字串比較

el表示式一般不直接用==判斷是否相等 != > < >= <=之類的表示不等於 大於 小於 大於等於 小於等於, 而是使用字母表示的表示式,他們的表示如下: == eq 等於 != ne 不等於 > gt 大於 < lt 小於 >

python3 常用模組(時間os路徑及檔案操作字串比較,檔案內容比較等模組)

python裡面有很多模組,以實現各種功能,學習python,我個人認為最重要的是熟練掌握模組的功能,靈活應用,首先就要掌握基礎模組。 本文的主要模組包括:時間的模組(time,datetime和calendar),os模組(路徑操作模組os.path,讀寫檔案模組open

Python小白學習路—whilefor循環運算

範圍 src 格式 次循環 pen 映射 年齡 退出 finish Python裏面的循環跟其他語言裏的循環基本一致,只是書寫格式不同。 1.for循環: for [循環條件]:[循環語句]  滿足循環條件,則執行循環語句,執行一次判斷一次,不滿足則結束循環。 簡單的循環:

Java學習 數字排順序

parse 一個 n) scanner length max true line 最大值 初次學習java,以下案例僅探討輸入三個數排順序大小,具體的思路是先輸入數字並以,分割開,通過nextLine獲取剛才輸入的字符串,並通過分割得到該字符串的一個string數組,利用一

JVM基礎學習基本概念可見性與同步

讀寫 應用 資源 而不是 檢查 依靠 完成 層次 並發 開發高性能並發應用不是一件容易的事情。這類應用的例子包括高性能Web服務器、遊戲服務器和搜索引擎爬蟲等。這樣的應用可能需要同時處理成千上萬個請求。對於這樣的應用,一般采用多線程或事件驅動的 架構 。對於Java來說,在

《C++語言程式設計基礎》學習陣列指標與字串

陣列元素在記憶體中順次存放,它們的地址是連續的。元素間實體地址上的相鄰,對應著邏輯次序上的相鄰。 陣列名字是陣列首元素的記憶體地址,陣列名是常量,不能被賦值 陣列名是陣列的指標,指向首個元素的地址,多維陣列的n-1維是指標一維陣列初始化: 在定義陣列時給出陣列元素的初始值:列

java字元陣列 字串整形之間的轉換。

轉自https://www.cnblogs.com/javacatalina/p/6641338.html 一、字元陣列轉字串 方法1 char[] str = {'a','b','d'}; StringBuffer sb = new StringBugger

Python小白學習路—whilefor迴圈運算

Python裡面的迴圈跟其他語言裡的迴圈基本一致,只是書寫格式不同。 1.for迴圈: for [迴圈條件]:[迴圈語句]  滿足迴圈條件,則執行迴圈語句,執行一次判斷一次,不滿足則結束迴圈。 簡單的迴圈: in range() 表示在什麼範圍裡 1 # 迴圈 自動累計加一 2

SSH框架學習Spring ---- 4Spring的事務管理和jdbcTemplate

本節講的是spring對dao層的封裝,之前可能有更好的做法,但是要知道spring也提供了這種技術。 本節的主要內容是: 1、spring的jdbcTemplate操作(實現事務crud操作) 2、spring配置連線池 (1)配置c3p0連線池 (2)service和dao注

SSH框架學習Spring ---- 3Spring封裝的監聽器和log4j的用法

第一部分:監聽器 問題所在: action呼叫service、service呼叫dao。每次訪問action的時候,都要建立一次物件,且載入一次配置檔案,這顯得很耗費資源。 底層解決方案 僅在伺服器啟動的時候,建立物件載入檔案,通過在底層使用監聽器、servletContex

SSH框架學習Spring ---- 2認識AOP ! 警告,前方增強怪!

一、AOP底層分析 需求:根據客戶需要,當前的Dao.class中的add()方法,在呼叫之前需要列印一條"開始列印"語句。 以往的做法: 動add的程式碼,該怎麼改就怎麼改。這其實是不符合設計模式的,對於業務的拓展不修改原來的程式碼,這就是AOP思想。 概念 AOP啥意

SSH框架學習Spring ----1Spring入門和IOC

一、 spring概述 開源的輕量級框架(不依賴很多其他東西–輕量級) 兩部分核心 aop 面向切面程式設計:擴充套件功能不是修改原始碼來實現 ioc 控制反轉:把物件的建立交給spring,通過配置代替之前的new物件操作。

jsMath方法字串方法date例項

Math方法 Math是一個物件資料型別 在Math下有很多方法 console.log(Math); console.log(typeof Math); Math.abs(): 取絕對值 Math.floor(): 向下取整 console.log(Math.floor(4.