tft每日頭條

 > 科技

 > shell編程包含哪些結構

shell編程包含哪些結構

科技 更新时间:2024-09-27 12:04:11

$0 這個程式的執行名字

$n 這個程式的第n個參數值,n=1..9

$* 這個程式的所有參數,此選項參數可超過9個。

$# 這個程式的參數個數

$$ 這個程式的PID(腳本運行的當前進程ID号)

$! 執行上一個背景指令的PID(後台運行的最後一個進程的進程ID号)

$? 執行上一個指令的返回值 (顯示最後命令的退出狀态。0表示沒有錯誤,其他任何值表明有錯誤)

$- 顯示shell使用的當前選項,與set命令功能相同

$@ 跟$*類似,但是可以當作數組用

舉例說明:

以下示例顯示了此簡單操作的運行情況:

$ ls -l

total 33

drwxr-xr-w 2 root root 1024 Dec 5 05:05 LST

-rw-rw-rw- 1 emmett users 27360 Feb 6 07:30 evan

-rwsrwsrwx 1 root root 152 Feb 6 07:32 hannah

drwxr-xr-x 2 emmett users 1024 Feb 6 07:31 karen

-rw------- 1 emmett users 152 Feb 6 07:29 kristin

-rw-r--r-- 1 emmett users 152 Feb 6 07:29 spencer

$

$ test -r evan

$ echo $?

0

$ test -r walter

$ echo $?

1

$

由于第一次評估為真 — 文件存在且可讀 — 返回值為真,或 0。由于第二次評估的文件不存在,該值為假,返回值不為零。将值指定為零或非零很重要,因為在失敗時不會始終返回 1(雖然這是通常返回的值),可能返回一個非零值。

正如開頭所提到的,除了使用 test 外,您還可以用方括号 [ ] 将命令括住來向 shell 發出同樣的命令 — 如下所示:

$ [ -w evan ]

$ echo $?

0

$ [ -x evan ]

$ echo $?

1

$

同樣,第一個表達式為真,第二個表達式為假 — 正如返回值所指示的那樣。您還可以使用以下命令将兩個文件彼此進行比較:

file1 -ef file2 測試以判斷兩個文件是否與同一個設備相連,是否擁有相同的 inode 編号

file1 -nt file2 測試以判斷第一個文件是否比第二個文件更新(由修改日期決定)

file1 -ot file2 測試以判斷第一個文件是否比第二個文件更舊


if [ -z "$DIRNAME" ]這裡的-z是什麼意思啊?

if [ -d /userdata ] 這個-d呢?

類似這樣的文件操作在shell編程中用處很大:我總結有一些一些經常使用

-d :判斷制定的是否為目錄

-z:判斷制定的變量是否存在值

-f:判斷制定的是否為文件

-L:判斷制定的是否為符号鍊接

-r:判斷制定的是否可讀

-s:判斷存在的對象長度是否為0

-w:判斷制定的是否可寫

-x:判斷存在的對象是否可以執行

!:測試條件的否定符号

這些文件操作很多時候給腳本編程帶來方便,尤其是用在if條件語句中

shell編程包含哪些結構(shell編程腳本中)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved