日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【shell】常用语法 -b file -c file -f file-d file -x file

發(fā)布時(shí)間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【shell】常用语法 -b file -c file -f file-d file -x file 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【shell】常用語法 -b file? -c file? -f file-d file? -x file?????

一、test條件判斷

1test文件測試:

-b file?????若文件存在且是一個(gè)塊特殊文件,則為真

-c file?????若文件存在且是一個(gè)字符特殊文件,則為真

-d file?????若文件存在且是一個(gè)目錄,則為真

-e file?????若文件存在,則為真

-f file?????若文件存在且為一個(gè)規(guī)則文件,則為真

-g file?????若文件存在且設(shè)置了SGID位的值,則為真

-h file?????若文件存在且為一個(gè)符號鏈接,則為真

-k file?????若文件存在且設(shè)置了“sticky”位的值,則為真

-p file?????若文件存在且為一已命名管道,則為真

-s file?????若文件存在且其大小大于零,則為真

-u file?????若文件存在且設(shè)置了SUID位的值,則為真

-r file?????若文件存在且可讀,則為真

-w file?????若文件存在且可寫,則為真

-x file?????若文件存在且可執(zhí)行,則為真

-o file?????若文件存在且被有效用戶ID所擁有,則為真

?

2test字符串比較

-z?string?????????string長度為0,則為真

-n?string?????????string長度不為0,則為真

string1 = string2????若兩個(gè)字符串相等,則為真

string1 != string2???若兩個(gè)字符串不相等,則為真

?

3test命令的數(shù)字比較操作符

int1 -eq int2??????int1等于int2,則為真

int1 –ne int2??????int1不等于int2,則為真

int1 –lt int2??????int1小于int2,則為真

int1 –le int2??????int1小于等于int2,則為真

int1 –gt int2??????int1大于int2,則為真

int1 –ge int2??????int1大于等于int2,則為真

?

4test復(fù)合表達(dá)式

! expr?????????????????????expr為假則復(fù)合表達(dá)式為真。expr可以是任何有效的測試表達(dá)式

expr1?-a?expr2???????????expr1expr2都為真,則為真

expr1?-o?expr2???????????expr1expr2有一個(gè)為真,則為真

?

二、shell里的特殊變量

# sh /usr/local/bkeep/shell.sh 001 002

I'm $0 is:/usr/local/bkeep/shell.sh????????//正在被執(zhí)行腳本的名字;`basename $0`

I'm $1 is:001????????????????//$1接收到的參數(shù)

I'm $2 is:002????????????????//$2接收到的參數(shù)

I'm $# is:2???????????????????//總共接收到的參數(shù)個(gè)數(shù)

I'm $* is:001 002?????????//把接收到的參數(shù)全部打印出來

I'm $@ is:001 002????????//同上

I'm $? is:0???????????????????//上一個(gè)腳本的退出狀態(tài)“0代表正常;“1非正常退出

I'm $$ is:24137????????????//當(dāng)前執(zhí)行腳本的進(jìn)程ID

I'm $! is:?????????????????????//前一個(gè)后臺進(jìn)程的id

?

三:其他

1.返回值 #?

cd dir

echo "$?"

如果dir存在,則返回0,不存在則返回1. 其他函數(shù)的命令也是一樣,比如diff,等等。

?

每個(gè)命令都會返回一個(gè) exit 狀態(tài)(有時(shí)候也叫return 狀態(tài)).成功返回0,如果返回一個(gè)非0 值,通
常情況下都會被認(rèn)為是一個(gè)錯(cuò)誤碼.一個(gè)編寫良好的UNIX 命令,程序,和工具都會返回一個(gè)0 作為
退出碼來表示成功,雖然偶爾也會有例外.

同樣的,腳本中的函數(shù)和腳本本身都會返回退出狀態(tài).在腳本或者是腳本函數(shù)中執(zhí)行的最后的命
令會決定退出狀態(tài).在腳本中,exit nnn 命令將會把nnn 退出碼傳遞給shell

?

$?讀取最后執(zhí)行命令的退出碼.函數(shù)返回后,$?給出函數(shù)最后執(zhí)行的那條命令的退出碼.這種給
函數(shù)返回值的方法是 Bash 的方法.對于腳本來說也一樣.總之,一般情況下,0 為成功,非0 失敗W

?

?2 .

$ 變量替換操作符
只有在變量被聲明,賦值,unset 或exported 或者是在變量代表一個(gè)signal 的時(shí)候,
變量才會是以本來的面目出現(xiàn)在腳本里.變量在被賦值的時(shí)候,可能需要使用"=",
read狀態(tài)或者是在循環(huán)的頭部.
在""中還是會發(fā)生變量替換,這被叫做部分引用,或叫弱引用.而在''中就不會發(fā)生變
量替換,這叫做全引用,也叫強(qiáng)引用.這兩個(gè)符合在同一個(gè)按鍵上。具體見第5 章的討論.
注意:$var 與${var}的區(qū)別,不加{},在某些上下文將引起錯(cuò)誤,為了安全,使用2.

?

還有一個(gè)按鍵在左上角,即按鍵1的左邊。此按鍵有下面的作用。即將ls -l的結(jié)果傳給a

17 a=`ls -l` # 把ls -l 的結(jié)果給a
18 echo $a # 別忘了,這么引用的話,ls 的結(jié)果中的所有空白部分都沒了(包括換行)
19 echo
20 echo "$a" # 這么引用就正常了,保留了空白

?或者直接

echo "$(ls -l)" 也可以取出目錄

?

3.

在read 命令狀態(tài)中
30 echo -n "Enter \"a\" "
31 read a
32 echo "The value of \"a\" is now $a."
33
34 echo
35

這個(gè)方法可以接受鍵盤輸入到a中。

?

?4.

在一個(gè)雙引號中直接使用變量名,一般都是沒有問題的.它阻止了所有在引號中的特殊字符的
重新解釋--包括變量名[2]--但是$,`和\除外.[3]保留$,作為特殊字符的意義,是為了能夠在雙
引號中也能夠正常地引用變量("$var").這樣在""中可以使用變量所表達(dá)的值(Example 4-1).
使用""來防止單詞分割.[4]如果在參數(shù)列表中使用雙引號,將使得雙引號中的參數(shù)作為一個(gè)參
數(shù).即使雙引號中的字符串包含多個(gè)單詞(也就是包含空白部分),也不會變?yōu)槎鄠€(gè)參數(shù),如:
1 variable1="a variable containing five words"
2 COMMAND This is $variable1 # COMMAND 將以7 個(gè)參數(shù)來執(zhí)行
3 # "This" "is" "a" "variable" "containing" "five" "words"
4
5 COMMAND "This is $variable1" # COMMAND 將以1 個(gè)參數(shù)來執(zhí)行

?

5.賦值的方法

--------------------------------------------------------

a:C風(fēng)格的賦值
7 (( a = 23 )) # 給一個(gè)變量賦值,從"="兩邊的空格就能看出這是c 風(fēng)格的處理.
8 echo "a (initial value) = $a"
9
10 (( a++ )) # 變量'a'后加1,C 風(fēng)格.
11 echo "a (after a++) = $a"
12
13 (( a-- )) # 變量'a'后減1,C 風(fēng)格.
14 echo "a (after a--) = $a"

?------------------------------------------------

37(( t = a<45?7:11 )) # C 風(fēng)格的3 元操作.
38 echo "If a < 45, then t = 7, else t = 11."
39 echo "t = $t " # Yes!

---------------------------------------------------

18 LIMIT=10
19
20 for ((a=1; a <= LIMIT ; a++)) # Double parentheses, and "LIMIT" with no "$".
20 for ((a=1; a <= LIMIT ; a++)) # 雙圓括號, 并且"LIMIT"變量前邊沒有 "$".
21 do
22 echo -n "$a "
23 done

--------------------------------------------

b:let

4 a=2334 # 整型
5 let "a += 1"?? #不加雙引號也可以
6 echo "a = $a " ?# a = 2335

--------------------------------------------------------------------

c:取變量

5 a=2334

6 a=$(($a+1))

7 echo "$a"?? #a=2335

?------------------------------------------

總結(jié)

以上是生活随笔為你收集整理的【shell】常用语法 -b file -c file -f file-d file -x file的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。