shell指令碼學習 三

2021-07-05 10:50:11 字數 2076 閱讀 4053

time for i in $(seq 11111);do count=`echo expr length "$"`;done;

time 表示打出當前指令碼執行時間,後面的語句 表示求字元長度

變數的數值計算:

((a=***xx))

b=$((******)) 只能計算整數

++  --  變數在前,先輸出變數值,變數在後,就是先運算後輸出變數的值

** 表示冪運算

判斷檔案的副檔名 if expr 「$1」:".*\.pub"  (副檔名不是.pub 就返回0 ,如果是,則返回$1字串的長度)

if expr 「$1」:".*\.pub"; then ***x fi

或者expr 「$1」:".*\.pub" &&echo 1 ||echo 0 如果匹配輸出1 否則輸出0

判斷變數是否是整數, 用變數加0 如果$? 返回非零,則表示報錯,則不是整數

shell指令碼用反斜線表示換一行接著寫

如果出錯可以用dos2unix ***x.sh

read 表示讀入引數 給對應變數 read -t 5 -p 「pls input:」 a  把讀入的資料傳給變數a,5秒後就超時退出 -p表示給使用者的提示資訊

i=2 

i=`echo $i+1|bc` 輸出內容通過管道交給bc 計算器程式(優勢在計算小數)

seq -s 「+」 10 從1開始到10 產生乙個序列,中間用加號連線

echo 「scale=2:;5.23/3.13」|bc  表示將結果保留兩位小數

echo 「obase=2:;5.23/3.13」|bc  表示將結果輸出為2進製

$ 表示取出變數的值

& 表示取位址,把結果塞到什麼位置

echo -n 「***xx」  表示不換行列印

[ ***xx ] 或者 [[ ****** ]] 都可以用在測試判斷上, 但是&& ,||,>,< 可以用在雙括號裡,不許用在單括號裡。

但是單括號裡 可以用 -a 表示&&  用 -o 表示||  -gt 表示 >  -lt 表示 < 

推薦用[[ ***xx ]],但是這個教程的老師用的是[***x]  而且系統指令碼多用[******]

-f ***x  表示 ***xx檔案是否存在

-d ***xx 表示 ***xx 目錄是否存在

-z 「***x」  判斷字串是否長度為0,為0則為真

變數表示引數進行判斷加上雙引號比較保險,雙引號會把內容填入變數之中

字串變數一定要加雙引號

求字串長度「$」 字串***xx的長度

多行內容列印輸出用 

cat if[條件]

then

指令fi

如果要寫在一行就要用分號分開

檢視多餘記憶體  free -m

剩餘記憶體,linux 特性,只要不用的記憶體就給你快取起來,真正的記憶體看buffer位置

free -m|awk '/buffers\// '  awk 命令找到對應關鍵字的行  $nf 

nf代表:瀏覽記錄的域的個數

$nf代表:最後乙個field(列)

也有前者是輸出了域個數,後者是輸出最後乙個欄位的內容

if 條件

then

指令elif 條件

then

指令else

指令fi

發郵件的語法

aaaa | mail -s "主題" 「******[email protected]」  # aaa是內容,主題是主題,***x是郵箱位址

或者先賦值變數f,然後  mail -s "主題" 「******[email protected]」< $f

sed 's/ //g' 

s 替換

/ 正規表示式開始

[ ] 匹配中的每個字元,這裡是空格

* 前一字元重複任意次(包含0次)

$ 錨定行尾

g 全部替換

判斷字串是否為數字的方法:

1、把字串中數字全部去掉,看看長度是否為零

2、把變數字串的數字去掉--echo 「$」     格式為$

3、把非數字的部分刪除看看是不是本身

4、expr 計算判斷   expr $1 +0 >/dev/null 2>&1

shell 指令碼學習 三

printf 命令的語法 預設不會像 echo 一樣自動新增換行符 printf format string arguments.format sting 格式控制字串 arguments 為引數列表 bin bash printf 10s 8s 4s n 姓名 性別 體重kg printf 10s...

Shell指令碼(三) Shell指令碼入門

1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...

Shell 指令碼學習筆記三 Shell字串

your name li lei 雙引號字串 str this is a string 單引號字串 拼接字串 your name qinjx greeting hello,your name greeting 1 hello,echo greeting greeting 1 獲取字串長度 strin...