文章目錄
1 $? $# $* $n $0
$?
表示上一次的輸出結果,若爲0
:表示成功;不是0
,表示失敗$#
表示腳本中參數的個數
$*
表示對應參數的值$n
表示爲(n>=1
)的參數$0
表示腳本名
###這是測試腳本
#!/bin/sh
echo 這是腳本名字:$0
echo 總共有$#個人,分別是$*
echo 第一個人是$1,第二個人是$2
### 這是運行結果
這是腳本名字:sympol.sh
總共有2個人,分別是李四 張三
第一個人是李四,第二個人是張三
$?
的測試:
2 分號
分號
是多個語句之間的分隔符號
,當只有一個語句的時候,末尾無需分號
,最後一個語句後面也無需分號
,否則報錯
3 引號
單引號
中是原始字符串
雙引號
可以對特殊字符進行擴展
一般不寫的就是當雙引號用的
a=bcdef
echo $a # 輸出bcdef
echo "$a" #雙引號將進行變量擴展 ,輸出bcdef
echo '$a' #單引號直接輸出$a
4 括號的作用
4.1 命令替換
$( )
和反引號`(tab
按鍵上面) 作用相同:命令替換
4.2 數值運算
$(( ))
是整數數值運算,也可用(( ))
代替- 另
$[ ]
也是進行數學運算的;
4.3 test運算
[ ]
是代替test
運算符的,也可用[[ ]]
代替,使用雙中括號,邏輯更加嚴謹
4.4 ${}
4.4.1 界定符號
${}
界定符號,比如$ab
,就相當於${ab}
,而${a}b
纔是只取a
的值
對於linux符號的使用例子,可以參考本人的linux小遊戲來熟悉
4.4.2 取路徑,文件名,後綴
#假設一個變量名爲file
file=/dir1/dir2/dir3/my.file.txt
${file#*/}:刪掉第一個 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:刪掉最後一個 / 及其左邊的字符串:my.file.txt
${file#*.}:刪掉第一個 . 及其左邊的字符串:file.txt
${file##*.}:刪掉最後一個 . 及其左邊的字符串:txt
${file%/*}:刪掉最後一個 / 及其右邊的字符串:/dir1/dir2/dir3
${file%%/*}:刪掉第一個 / 及其右邊的字符串:(空值)
${file%.*}:刪掉最後一個 . 及其右邊的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:刪掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/my
記憶的方法爲:
#
表示從左邊算起第一個(鍵盤上#
在$
的左邊,要注意使用#
時,刪除符號*
放在標誌符號(/或.
)左邊)##
:表示從左邊算起最後一個%
表示從右邊算起第一個(鍵盤上%
在$
的右邊,要注意使用%
時,刪除符號*
放在標誌符號(/或.
)右邊)%%
:表示從右邊算起最後一個單一
符號是最小匹配
;兩個
符號是最大匹配
*
:表示要刪除的內容,對於#
和##
的情況,它位於
指定的字符(例子中的'/'和'.'
)的左邊
,表示刪除指定字符及其左邊的內容;對於%
和%%
的情況,它位於
指定的字符(例子中的'/'和'.'
)的右邊
,表示刪除指定字符及其右邊的內容。這裏的*
的位置不能互換,即不能把*
號放在#
或##
的右邊,反之亦然。
5 與(&)或(|)
5.1 與&
&
:表示任務在後臺執行,在後臺運行,redis-server &
&&
:表示前一條命令執行成功時,才執行後一條命令,如:echo '1' && echo '2'
5.2 或|
|
:表示管道符,上一條命令的輸出
作爲下一條命令參數
||
:表示上一條命令執行失敗
後,才執行下一條命令,如:cat nofile || echo '1'