例子
ss='abc\n
'echo -e $ss
abc #換行起作用
echo
$ssabc
2.1 =左右兩側不要帶空格
a = "hello
"#錯誤
a="hello
"
2.2 左邊變數名不可加$
$a='134'
[jihite
]$a=$a'
abc'
[jihite
]$echo a
a[jihite
]$echo $a
134abc
b=4let
"c=$b+1
"echo $c
小例
i=9000while [ $i -lt 9010]do
let
"i=$i+1
"echo
$idone
90019002
9003
9004
9005
9006
9007
9008
9009
9010
單引號和雙引號一樣都是字串的界定符,而不是字元的界定符。單引號用於保持引號內所有字元的字面值,即使引號內的\和回車也不例外。
舉例
bb="hello
"echo
"$bb
"hello
echo
'$bb
'$bb
注意ecoh -e '$bb' 結果還是$bb,因為'$bb'就是字面值,不會轉義。
5.1 宣告、定義
5.2 訪問
5.3 遍歷
for var in $doecho
$var
done
5.4 陣列長度
num=$
對比:獲取字串長度:num=$
for ((i=0;i<5;i++)); dodone
wait
對比
for ((i=0;i<5;i++)); do&done
wait
這個在上面的基礎上多加了乙個後台執行&符號,此時5個迴圈任務併發執行,最後需要3s多一點的時間(效果非常明顯)。wait的作用是完成後台所有的任務後才往下執行,否則程式本身會等待。
字串最後有個'\r'是非常噁心的,可以通過tr命令去掉
a="hello\r
"echo $a | tr -d '\r'
hello\r
echo $a | tr -d "\r"
hello\r
echo -e $a | tr -d '\r'
hello #轉移字元起作用
echo -e $a | tr -d "\r"
hello
bash -x ***.sh
+開頭的是編譯的中間過程,不帶+的為正常的輸出。效果非常明顯。
#!/bin/bashproc=$1proc_num=`ps -ef | grep root | grep $proc | wc -l`
echo
$proc_num
if [ $proc_num = 2
]then exit 0
else exit 2
fi
注:if [ con ], 條件con和之間有空格
e.g. if [ $proc_num -gt 1 ]
以上為數字的比較,字串的比較用'='、'!='。e.g.
rev=$(cat /etc/ld.so.conf | grep usr/local/lib)if [[ $rev != '
/usr/local/lib']]
then
echo
"hello
"fi
例1:
例如:以下shell指令碼每隔10秒鐘就列印出「hell, dansir」
#!/bin/shellwhile
true
doecho
"hello, dansir
"sleep
10sdone
例2:
ids="123456
789"
for i in
$ids
doecho
$idone
執行
$sh del.sh123456
789
$(eval echo $v_endcomm)
Shell程式設計 shell特性
linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...
Shell程式設計 Shell函式
shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...
Shell程式設計
1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...