Shell入門
阿新 • • 發佈:2021-02-01
一、Shell中的變數
1. $n
基本語法
2. $#
基本語法
$#(功能描述:獲取所有輸入引數個數,常用於迴圈)。
3. $*
基本語法
$*(功能描述:這個變數代表命令列中所有的引數,把所有的引數看成一個整體)
[email protected]
基本語法
[email protected](功能描述:這個變數也代表命令列中所有的引數,不過他把每個引數區分對待)
5.$?
基本語法
$? (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確。)
二、條件判斷
常用的判斷條件
-
兩個整數之間比較
-lt 小於(less than)
-le 小於等於(less equal)
-eq 等於(equal)
-gt 大於(greater than)
-ge 大於等於(greater equal)
-ne 不等於(Not equal) -
按照檔案許可權進行判斷
-r 有讀的許可權(read)
-w 有寫的許可權(write)
-x 有執行的許可權(execute) -
按照檔案型別進行判斷
-f 檔案存在並且是一個常規的檔案(file)
-e 檔案存在(existence)
-d 檔案存在並是一個目錄(directory)
三、流程控制
1. if語句
#!/bin/bash
#如果輸入1,輸出a,輸入2,輸出b,其他輸出c
if [ $1 = 1 ]
then
echo a
elif [ $1 = 2 ]
then
echo b
else
echo c
fi
2. case語句
#!/bin/bash
#如果輸入1,輸出a,輸入2,輸出b,其他輸出c
case $1 in
"1")
echo a
;;
"2")
echo b
;;
*)
echo c
;;
esac
3. for迴圈
#!/bin/bash
#1到100的和
sum= 0
for ((i=1;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
#增強for迴圈
#!/bin/bash
for i in a b c
do
echo $i
done
4. while迴圈
#!/bin/bash
#1到100的和
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
四、Shell工具
1. cut
- 基本用法
cut [選項引數] filename - 選項引數說明
選項引數 | 功能 |
---|---|
-f | 列號,提取第幾列 |
-d | 分隔符,按照指定分隔符分隔列 |
-c | 指定具體的字元 |
2.sed
- 基本用法
sed [選項引數] ‘command’ filename - 選項引數說明
選項引數 | 功能 |
---|---|
-e | 直接在指令列模式上進行sed的動作編輯 |
-i | 直接編輯檔案 |
- 命令功能描述
命令 | 功能描述哦 |
---|---|
a | 新增,a的後面可以接字串,在下一行出現 |
d | 刪除 |
s | 查詢並替換 |
3.awk
- 基本語法
awk [選項引數] ‘pattern1{action1} pattern2{action2}…’ filename
pattern:表示AWK在資料中查詢的內容,就是匹配模式
action:在找到匹配內容時所執行的一系列命令 - 選項引數說明
選項引數 | 功能 |
---|---|
-F | 指定輸入檔案分隔符 |
-v | 賦值一個使用者定義變數 |
- awk的內建變數
變數 | 說明 |
---|---|
FILENAME | 檔名 |
NR | 已讀的記錄數 |
NF | 瀏覽記錄的域的個數(切割之後列的個數) |
4. sort
-
基本語法
sort (選項) (檔案列表) -
選項引數說明
選項 | 說明 |
---|---|
-n | 按照數值的大小排序 |
-r | 一相反的順序來排序(預設排序方式為升序) |
-t | 設定排序時所用的分隔符 |
-k | 指定需要排序的列 |