shell編程基礎知識(二)

----來源於網絡整理。

1、shell編程只有一種數據類型:字符串類型

2、變量:

1)環境變量:(類似全局變量)

printenv  顯示當前shell的環境變量(或者  env   命令)

2)本地變量:(類似局部變量)

可以自己定義變量:

VAR=hello     ----->定義了一個變量---->默認是本地變量

echo  $VAR     ----->打印變量的值,變量前面要加$

將本地變量變爲環境變量:

export  VAR

env |grep $VAR  -------->查看變量,已經能看到了。

 有無$的區別:有的話,找的是變量的值,沒有的話,找的是變量的名。

unset 變量   ------->刪除定義的本地變量或環境變量。

3、文件名代換

*  任意多字符

?匹配一個字符

[] 匹配括號中任意一個字符的一次出現-----[]只佔一個字符

ls  file[0-9].c

4、命令代換

方法1:“`”----tab建上的那個反引號

VAL=`date`

這樣 echo $VAL   就能執行date 命令 

方法2:將命令用$()括起來

VAL=$(date)

5、算數代換

VAL=10

echo   $(($VAL+1))

echo   $((VAL+1))

echo   $[VAL+1]    -------->最簡單

echo   $[$VAL+1]

四種方法效果一樣。

echo  $[2#10+1]   二進制10 +十進制1

6、轉義字符

文件名中有特殊字符需要轉義  touch  \$file

rm 的時候,也需要在文件名中加轉義字符

特殊情況:

touch  ---abc   ------>帶-的情況

方法一:

touch  ./---abc

rm  ./---abc                ----->否則刪不掉。

方法二:

touch -- -abc 

rm  -- -abc

7、單引號 

當輸出的字符串需要添加“”的時候,此時就需要用單引號把字符串引起來。----使用轉義字符也能做到

單引號,會將其中的內容原樣輸出,即便是變量,也不會當做變量

 

8、雙引號

雙引號一般情況下是 與   不加雙引號的情況一樣的。

特殊情況:

echo  "$VAL"   ,當VAL=     的形式是,即VAL的值爲空, VAL的值用來比較時,不加雙引號會出錯,所以,加“”更安全一些。

9、條件測試

echo $?     ---------->打印出上一個執行進程的退出的值。

test  或 [   命令測試一個條件是否成立,成立返回0,不成立返回1

形式如下例子:

var=100

test $var -gt 100

echo $?  --------->打印出返回值。

gt--->大於

ge--->大於等於

lt---->小於

le---->小於等於

eq--->等於

ne--->不等於

-d  DIR   --->判斷是否是目錄

-f   FILE  ---->判斷是否是普通文件,

-z   STRING---->判斷字符串長度是否爲0

-n   STRING---->判斷字符串長度是否不爲0

string1 = string2  ---->兩個字符串相同爲真,返回0----->等號兩邊必須要有空格

string1 != string2  ---->兩個字符串不相同爲真,返回0-----> !=兩邊必須要有空格

test命令可以替換爲[命令

[ -f  file.c ]----------->[ 後邊有空格   ]前邊有空格

因爲這是命令與 參數的關係。

示例:

var=hello ------------>字符串的長度不爲空,變量不加雙引號也沒有關係。

[ -n $var ] 

var=          ------------->字符串的長度爲空,變量必須加雙引號,否則出錯。

[ -n "$var" ] 

echo $?----------------->爲假,返回1

 

[ -n $var ] 

echo $?----------------->返回0------------>與實際情況不符。

小結:取變量值的時候,儘量加“”,肯定不會出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章