天天看點

shell_條件判斷

  • sort

  1. -n

    :按數字排序,預設是按照字元串排序.
  2. -r

    :

    reverse

    反排序
  3. -k a,b

    :排序的範圍,第

    a

    b

  4. -t ":"

    :修改分隔符,例如:

    cp /etc/passwd /tmp/sh

    sort -n -k 3,4 -t ":" student | awk 'BEGIN{FS=":"}{print $3 "\t" $4}'

    sort -n -r -k 3,4 -t ":" student | awk 'BEGIN{FS=":"}{print $3 "\t" $4}'

回顧:

$?

:代表上一條指令是否執行正确

echo $?

或者用邏輯表達

[ -f /root ] && echo yes || echo no

條件判斷

  • 判斷的2組格式
  1. test -e /root/install.log

  2. [ -e /root/install.log ]

  • 檔案類型判斷(常用選項)
-e 檔案存在為真
-f 檔案存在且為普通檔案則真
-d 檔案存在且為目錄則真
  1. test -e /root/install.log

  2. [ -e /root/install.log ]

  • 檔案權限(任意使用者有權限都算)
-r read
-w write
-x execute
  1. test -w /root/install.log

  2. [ -r /root/install.log ]

硬連結(

hard link

)與軟連結(

soft link

)差別

shell_條件判斷
  • hard link

  • 硬連結是僅檔案名字不同但是inode号相同的檔案
  1. 硬連結和

    原file

    有相同的

    inode

    date block

  2. 不能對目錄建立
  3. 不能再交叉檔案系統建立硬連結,因為

    inode

    在不同檔案系統不一樣
  4. 删除一個硬連結不影響相同

    inode

    檔案
  • soft link

  • 擁有自己的

    inode

    block

    ,存放的是指向檔案的路徑,類比于windows的快捷方式
  1. 可以對目錄建立
  2. 不存在的檔案和目錄也可以建立
  3. 可以在交叉的檔案系統建立
  • 檔案時間比較
file1 -nt file2 new time 修改時間是否新
file1 -ot file2

old time

file1 -ef file2

equal file

,判斷檔案

inode

是否相同,即是否為同一檔案

test /etc/passwd -nt /tmp/temp && echo 1 || echo 2

[ /etc/passwd -nt /tmp/temp ] ; echo $?

  • 整數之間的比較

eq

equal

相等

ne

not equal

不相等

gt

greater than

大于

ge

greater equal

大于等于

it

lower than

小于

ie

lower equal

小于等于

test 1 -eq 2 && echo yes || echo no

[ 1 -eq 2] ; echo $?

  • 字元串之間的比較

-z

為空則真

-n

非空則真

!=

相等

==

不相等

test -z "string" && echo yes || echo no

[ -z "string" ] ; echo $?

  • 邏輯判斷

-a

and

[ -z "" -a -z "addd"] ; echo $?

-o

or

[ -z "" -o -z "dd" ] ; echo $?

!

[ ! -z "ad" ] ; echo $?