1. 程式人生 > 其它 >Shell入門

Shell入門

技術標籤:Shellshell

一、Shell中的變數

1. $n

基本語法
在這裡插入圖片描述

2. $#

基本語法
$#(功能描述:獲取所有輸入引數個數,常用於迴圈)。

3. $*

基本語法
$*(功能描述:這個變數代表命令列中所有的引數,把所有的引數看成一個整體)

[email protected]

基本語法
[email protected](功能描述:這個變數也代表命令列中所有的引數,不過他把每個引數區分對待)

5.$?

基本語法
$? (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確。)

二、條件判斷

常用的判斷條件

  1. 兩個整數之間比較
    -lt 小於(less than)
    -le 小於等於(less equal)
    -eq 等於(equal)
    -gt 大於(greater than)
    -ge 大於等於(greater equal)
    -ne 不等於(Not equal)

  2. 按照檔案許可權進行判斷
    -r 有讀的許可權(read)
    -w 有寫的許可權(write)
    -x 有執行的許可權(execute)

  3. 按照檔案型別進行判斷
    -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

  1. 基本用法
    cut [選項引數] filename
  2. 選項引數說明
選項引數功能
-f列號,提取第幾列
-d分隔符,按照指定分隔符分隔列
-c指定具體的字元

2.sed

  1. 基本用法
    sed [選項引數] ‘command’ filename
  2. 選項引數說明
選項引數功能
-e直接在指令列模式上進行sed的動作編輯
-i直接編輯檔案
  1. 命令功能描述
命令功能描述哦
a新增,a的後面可以接字串,在下一行出現
d刪除
s查詢並替換

3.awk

  1. 基本語法
    awk [選項引數] ‘pattern1{action1} pattern2{action2}…’ filename
    pattern:表示AWK在資料中查詢的內容,就是匹配模式
    action:在找到匹配內容時所執行的一系列命令
  2. 選項引數說明
選項引數功能
-F指定輸入檔案分隔符
-v賦值一個使用者定義變數
  1. awk的內建變數
變數說明
FILENAME檔名
NR已讀的記錄數
NF瀏覽記錄的域的個數(切割之後列的個數)

4. sort

  1. 基本語法
    sort (選項) (檔案列表)

  2. 選項引數說明

選項說明
-n按照數值的大小排序
-r一相反的順序來排序(預設排序方式為升序)
-t設定排序時所用的分隔符
-k指定需要排序的列