shell程式設計

2022-06-25 20:42:13 字數 2243 閱讀 5000

標準的shell指令碼包含要素:

1、指令碼用法注釋,申明指令碼執行方式,可以優雅和簡化執行步驟

#!/bin/bash

2、3、賦值運算子不能有空格,算術運算子必須有空格

4、條件判斷,中括號和條件判斷式中間必須有空格

5、if 判斷

#!/bin/bash

if [ $1 -eq 1 ]

then

echo "hello shell!"

elif [ $1 -eq 2 ]

then

echo "hate shell"

fi

6、case語句

#!/bin/bash

case $1 in

1) echo "nihao"

;;2)

echo "hello"

;;*)

echo "gun"

;;esac

7、for迴圈

#!/bin/bash

s=0for((i=1;i<=100;i++ ))

do s=$[$s+$i]

done

echo $s

8、while迴圈

#!/bin/bash

s=0i=0

while [ $i -le 100 ]

do s=$[$s + $i]

i=$[$i + 1]

done

echo $s

9、切割檔案的第一列:

cut -d "" -f 1 filename.txt

10、cut

一、切割cut.txt第一列

cut -d " " -f 1 cut.txt

二、在檔案cut.txt中切割出shen

cat cut.txt | grep shen | cut -d  " " -f 1

11、sed

(以檔案sed.txt為例)

一、將「 ni hao」這個單詞插入到sed.txt第二行下,列印。

sed "2a ni hao" sed.txt

二、刪除sed.txt檔案所有包含wo的行

sed '/wo/d' sed.txt

三、將sed.txt檔案中wo替換為ni

sed "s/wo/ni/g" sed.txt

四、將sed.txt檔案中的第二行刪除並將wo替換為ni

sed -e "2d" -e  "s/wo/ni/g" sed.txt

12、awk

awk[選項引數]  'pattern1 pattern2...' filename     pattern:表示awk在資料中查詢的內容,就是匹配模式    action:找到匹配內容時所執行的一系列命令

一、搜尋passwd檔案以root關鍵字開頭的所有行,並輸出該行的第7列

awk  -f: '/^root/' passwd

二、搜尋passwd檔案以root關鍵字開頭的所有行,並輸出該行的第1列和第7列。中間以「,」隔開

awk  -f: '/^root/' passwd

三、只顯示passwd的第1列和第7列,以逗號分割,且在所有行前面新增列名user,shell在最後一行新增「gg,bin/haoya」

awk -f: 'begin  end' pass

四、統計passwd的檔名,每行的行號,每行的列數

awk -f : '' passwd

五、查詢sed.txt中空行所在的行號

awk '/^$/' sed.txt

13、sort  

作用:將檔案進行排序,並將排序結果標準輸出

按照「:」分割後的第三列倒序排序     -t:設定排序時所用的分隔字元 -n:依照數值的大小排序  -r:以相反的順序來排序 -k:指定需要排序的列

sort -t : -nrk 3 sed.txt

*練習:

找出當前資料夾(/home)下所有的文字檔案內容中包含有字元"shen"的檔名稱

grep -r "shen" /home | cut -d ":" -f 1

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