shell注意點(一)

2021-06-22 01:31:53 字數 972 閱讀 6158

整理最近shell的想法,以免想過之後又忘記。。.

首先還是講講引號。單引號強引用,雙引號弱引用很好理解。不過這兩個引號的使用還是很值得細究的。

雙引號僅能夠解釋`(反單號),$(美元符號)和\(轉義符號),應用也與這三者有關。

雙引號與反單號使用較頻繁,由於反單號用於提示shell需要處理乙個命令,結果超過乙個字串,通常都需要用雙引號闊住以避免歧義,比如應用在判斷式中。

#!/bin/bash

#判斷資料夾是否為空

[ -z "`ls -a $dir`" ]

#雙引號與$,為了避免變數中有空格等,超過乙個字串產生歧義。

#!/bin/bash

#列印變數

nu="2 1"

if [ $nu = "2 1" ]; then

echo $nu

fi

#如果按照上面**執行,會報錯too many arguments,所以通常不管怎樣,推薦判斷式符號兩側均加上雙引號

#雙引號與\,保留\的轉義特性,應用相對簡單,這個一般不會理解錯。不過對於\應該注意單雙引號的區別

#echo '\'' 	#『』必須成對,於是程式等待使用者輸入另乙個『

#echo "\"" #列印"

單引號將所有特殊含義字元全部取消含義,雖然理解簡單,但我剛開始總是搞錯,主要是與awk等其他命令組合有關

awk '' test.txt

awk "" test.txt

這兩者輸出結果完全不同,前者正常後者異常。由於此處使用的$1是希望作為awk的內建變數的,需要將原模原樣的作為引數附給awk才能正常輸出,而如果用""$1則會被程式的第乙個變數值替換,此處為空,所以輸出結果為test.txt的每一行。

其他的grep,sed什麼的也一樣,一般`和\使用不常見,而一旦碰到引數中有$就要多加注意了

shell注意點(二)

來說說字串的空值,在shell中,null與 均為空值,由於shell中的一大特性 變數會在指令碼真正執行前替換成其對應的值,並且shell相比於c等語言有著更大的寬容度,使得即使判斷空值這麼簡單的事也會出現諸多bug。本來判斷是否為空用 z str 即可,但是如果str為null,則由於shell...

shell指令碼注意點

1.等號兩邊不能有空格,例如 獲取七天前的日期 before 7 day date d 7 days ago y m d 2.自定義函式只能返回數值,不能返回陣列 字串等內容。如果需要生成字串等結果,可以宣告為全域性變數,然後將值賦給全域性變數,這樣就可以在函式外訪問 get string 返回錯誤...

三 shell的一些注意點

1.使指令碼具有執行許可權 chmod x test.sh 2.shell變數名和等號之間不能有空格,例如 myname zhangsan 3.單引號字串的限制 單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的 單引號字串中不能出現單引號 對單引號使用轉義符後也不行 4.bash支援一維陣...