shell 程式設計

2022-02-19 01:23:44 字數 2587 閱讀 4973

例子

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=4

let

"c=$b+1

"echo $c

小例

i=9000

while [ $i -lt 9010]do

let

"i=$i+1

"echo

$idone

9001

9002

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++)); do

done

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=$1

proc_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/shell

while

true

doecho

"hello, dansir

"sleep

10sdone

例2:

ids="

123456

789"

for i in

$ids

doecho

$idone

執行

$sh del.sh

123456

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 形式儲存所有輸入的命令列引數 以 ...