六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

Linux shell 比較運(yùn)算符使用方法教程

時(shí)間: 加城1195 分享

  Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。對(duì)于Linux基礎(chǔ),肯定要掌握的是基本命令和一些重要運(yùn)算符,這篇文章主要介紹了Linux shell 比較運(yùn)算符詳解,需要的朋友可以參考下

  文件比較運(yùn)算符

  -e filename 如果 filename 存在,則為真 [ -e /var/log/syslog ]

  -d filename 如果 filename 為目錄,則為真 [ -d /tmp/mydir ]

  -f filename 如果 filename 為常規(guī)文件,則為真 [ -f /usr/bin/grep ]

  -L filename 如果 filename 為符號(hào)鏈接,則為真 [ -L /usr/bin/grep ]

  -r filename 如果 filename 可讀,則為真 [ -r /var/log/syslog ]

  -w filename 如果 filename 可寫,則為真 [ -w /var/mytmp.txt ]

  -x filename 如果 filename 可執(zhí)行,則為真 [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,則為真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比較運(yùn)算符 (請(qǐng)注意引號(hào)的使用,這是防止空格擾亂代碼的好方法)

  -z string 如果 string 長(zhǎng)度為零,則為真 [ -z "$myvar" ]

  -n string 如果 string 長(zhǎng)度非零,則為真 [ -n "$myvar" ]

  string1 = string2 如果 string1 與 string2 相同,則為真 [ "$myvar" = "one two three" ]

  string1 != string2 如果 string1 與 string2 不同,則為真 [ "$myvar" != "one two three" ]

  算術(shù)比較運(yùn)算符

  num1 -eq num2 等于 [ 3 -eq $mynum ]

  num1 -ne num2 不等于 [ 3 -ne $mynum ]

  num1 -lt num2 小于 [ 3 -lt $mynum ]

  num1 -le num2 小于或等于 [ 3 -le $mynum ]

  num1 -gt num2 大于 [ 3 -gt $mynum ]

  num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

  算術(shù)運(yùn)算符

  + - * / % 表示加減乘除和取余運(yùn)算

  += -= *= /= 同 C 語言中的含義

  位操作符

  > >>= 表示位左右移一位操作

  & &= | |= 表示按位與、位或操作

  ~ ! 表示非操作

  ^ ^= 表示異或操作

  關(guān)系運(yùn)算符

  = == != 表示大于、小于、大于等于、小于等于、等于、不等于操作

  && || 邏輯與、邏輯或操作

  測(cè)試命令

  test命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件3個(gè)方面的測(cè)試,其測(cè)試符和相應(yīng)的功能分別如下。

  (1)數(shù)值測(cè)試:

  -eq 等于則為真。

  -ne 不等于則為真。

  -gt 大于則為真。

  -ge 大于等于則為真。

  -lt 小于則為真。

  -le 小于等于則為真。

  (2)字串測(cè)試:

  = 等于則為真。

  != 不相等則為真。

  -z字串 字串長(zhǎng)度偽則為真。

  -n字串 字串長(zhǎng)度不偽則為真。

  (3)文件測(cè)試:

  -e文件名 如果文件存在則為真。

  -r文件名 如果文件存在且可讀則為真。

  -w文件名 如果文件存在且可寫則為真。

  -x文件名 如果文件存在且可執(zhí)行則為真。

  -s文件名 如果文件存在且至少有一個(gè)字符則為真。

  -d文件名 如果文件存在且為目錄則為真。

  -f文件名 如果文件存在且為普通文件則為真。

  -c文件名 如果文件存在且為字符型特殊文件則為真。

  -b文件名 如果文件存在且為塊特殊文件則為真

  條件變量替換:

  Bash Shell可以進(jìn)行變量的條件替換,既只有某種條件發(fā)生時(shí)才進(jìn)行替換,替換

  條件放在{}中.

  (1) ${value:-word}

  當(dāng)變量未定義或者值為空時(shí),返回值為word的內(nèi)容,否則返回變量的值.

  (2) ${value:=word}

  與前者類似,只是若變量未定義或者值為空時(shí),在返回word的值的同時(shí)將 word賦值給value

  (3) ${value:?message}

  若變量已賦值的話,正常替換.否則將消息message送到標(biāo)準(zhǔn)錯(cuò)誤輸出(若此替換出現(xiàn)在Shell程序中,那么該程序?qū)⒔K止運(yùn)行)

  (4) ${value:+word}

  若變量已賦值的話,其值才用word替換,否則不進(jìn)行任何替換

  (5) ${value:offset}

  ${value:offset:length} 從變量中提取子串,這里offset和length可以是算術(shù)表達(dá)式.

  (6) ${#value}

  變量的字符個(gè)數(shù)

  (7) ${value#pattern}

  ${value##pattern}

  去掉value中與pattern相匹配的部分,條件是value的開頭與pattern相匹配

  #與##的區(qū)別在于一個(gè)是最短匹配模式,一個(gè)是最長(zhǎng)匹配模式.

  (8) ${value%pattern}

  ${value%%pattern}

  于(7)類似,只是是從value的尾部于pattern相匹配,%與%%的區(qū)別與#與##一樣

  (9) ${value/pattern/string}

  ${value//pattern/string}

  進(jìn)行變量?jī)?nèi)容的替換,把與pattern匹配的部分替換為string的內(nèi)容,/與//的區(qū)別與上同

  注意: 上述條件變量替換中,除(2)外,其余均不影響變量本身的值

  #!/bin/bash

  var1="1"

  var2="2"

  下面是“與”運(yùn)算符-a,另外注意,用一個(gè)test命令就可以了,還有if條件后面的分號(hào)

  if test $var1 = "1"-a $var2 = "2" ; then

  echo "equal"

  fi

  下面是“或”運(yùn)算符 -o,有一個(gè)為真就可以

  if test $var1 != "1" -o $var2 != "3" ; then

  echo "not equal"

  fi

  下面是“非”運(yùn)算符 !

  if條件是為真的時(shí)候執(zhí)行,如果使用!運(yùn)算符,那么原表達(dá)式必須為false

  if ! test $var1 != "1"; then

  echo "not 1"

  fi

  以上三個(gè)if都為真,所以三個(gè)echo都會(huì)打印

  補(bǔ)充:Linux基本命令

 ?、賚s 意為list 列出當(dāng)前文件夾中的文件

  -l 顯示文件的屬性 可用ll來表示

 ?、赼lias 別名 看看是否有別名的文件

  ③cd dir 跳躍目錄 -P選項(xiàng) 將路徑中的鏈接文件替換成鏈接指向的文件路徑

 ?、躳wd 查看當(dāng)前工作的文件夾名 使用-P的選項(xiàng),會(huì)直接進(jìn)入到其中,相當(dāng)于cd

  相關(guān)閱讀:Linuxshell腳本不執(zhí)行問題實(shí)例分析

  shell腳本不執(zhí)行問題:某天研發(fā)某同事找我說幫他看看他寫的shell腳本,死活不執(zhí)行,報(bào)錯(cuò)。我看了下,腳本很簡(jiǎn)單,也沒有常規(guī)性的錯(cuò)誤,報(bào)“:badinterpreter:Nosuchfileordirectory”錯(cuò)??催@錯(cuò),我就問他是不是在windows下編寫的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過的文本文件到了*nix里,每一行都多了個(gè)^M。解決:

  1)重新在linux下編寫腳本;

  2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復(fù)雜腳本問題。


Linux shell 比較運(yùn)算符相關(guān)文章:

1.linux shell腳本執(zhí)行命令

2.深度LinuxDeepin/Unix、Linux shell命令

3.linux shell cd命令

4.linux計(jì)算命令

5.linux命令分號(hào)&&和&,|和||的用法介紹

4016905