天天看點

Shell程式設計入門執行個體

圖形化界面的Shell

幼稚園的小孩,可以面對圖形化界面的電腦,手持滑鼠,愉快的上網沖浪

字元型界面的Shell

計算機專業的新生面對的無界面的Linux,用vi編寫一個簡單的

Hello World

,都會感到吃力

什麼是Shell?

Shell是指使用者與計算機互動的界面,分為"圖形化Shell"與"字元型Shell",個人計算機主要使用圖形化的Shell,伺服器主要使用字元型的Shell

Linux的shell可以碾壓windows的指令行

為什麼有了圖形化界面,還要使用字元型界面?

  • 對于鍵盤敲得賊6的程式員而言,字元型shell和圖形化shell差别不大
  • 圖形化界面會消耗更多的資源,對伺服器而言,每一分資源都非常寶貴
  • 伺服器要求穩定性高,圖形化界面更容易造成卡頓,會降低伺服器的穩定性
  • 為了極緻的性能,專業的伺服器軟體,大多是沒有圖形化界面的

程式員眼中Shell的"三六九等"...

等級 Shell分類
第一梯隊 zsh
第二梯隊 bash, sh
第三梯隊 Windows指令行
第四梯隊 Ubuntu, Mac, Windows中的圖形化界面

Shell變量

系統變量(在系統環境中有效)

zsh

,

base

中檢視系統變量

env

不同shell-檢視系統變量

内置變量(隻在特定Shell中有效)

在zsh的配置檔案

.zshrc

中設定

export my_name=export zhaozhaoli="把快樂放大!"

shell配置檔案變量.jpg

重新開機zsh,檢視剛設定好的變量

本地變量

  • 指令變量
  • 普通變量
變量運算(100除以50等于2)
變量占位

Shell腳本

Shell腳本就是把指令按順序放到一起,然後一起執行.執行腳本的解釋器就是Shell,由于bash是大多數機器的标配,是以在腳本的首行一般加上

#!/bin/base

來指明bash所在的位置,同時腳本用

.sh

作為字尾來表名自己的身份
  • 以求1至1000内奇數和為例
奇數和
#!/bin/bash
# 求1000以内奇數之和

# 聲明求和的值 
let sum=0
# 擷取1至1000的值并循環
for n in $(seq 1 1000)
do
    # 如果為奇數則執行累加操作
    if [ $((n%2)) == 1 ]
    then
        let sum=sum+n
    fi
done
echo "1至1000以内奇數之和為:${sum}"
           

Shell注釋

#!/bin/bash
# shell腳本注釋的第一種方式:在行前加 --> # (單行注釋)
echo "shell腳本可以單行注釋"

:<<!
這裡是shell注釋的第二種方式!
Shell幾乎是和Unix作業系統一起誕生,第一個Unix Shell是肯·湯普遜(Ken Thompson)以Multics上的Shell為模範在1971年改寫而成,并命名Thompson sh。即便是後來流行的bash(shell的一種變體),它的年齡實際上比目前流行的所有的Linux kernel都大,可謂在Linux系統上是先有Shell再有Kernel
!
echo "shell腳本可以多行注釋"
           

Shell判斷

#!/bin/bash
echo "經典小程式:"
echo "---求三個數的最大值---"
read -p "請輸入第一個數:" n1
read -p "請輸入第二個數:" n2
read -p "請輸入第三個數:" n3

# 預設第一個值為最大值
let MAX=${n1}

# 将第一個值與第二個值判斷
if [ ${n2} -ge ${MAX} ]
then
    # 如果第二個值大于等于最大值則第二值為最大值
    MAX=${n2}
fi

# 将最大值與第三個值對比
if [ ${n3} -ge ${MAX} ]
then
    # 如果第三個值大于等于最大值則第三個值為最大值
    MAX=${n3}
fi
# 輸出最大值
echo "最大值為:${MAX}"
           

Shell循環

#!/bin/bash
# 暴力解高斯問題,求1至100以内的所有數和
let sum=0
for i in $(seq 1 100)
do
    sum=$((sum+i))
done
echo "1至100以内所有數和${sum}"
           

Shell函數

#!/bin/bash

# 将三個數相加
three_add(){
    let res=0
    echo "腳本的名稱為$0"
    echo "第一個參數為$1"
    echo "第二個參數為$2"
    echo "第三個參數為$3"
    let res=$1+$2
    let res=${res}+$3
    echo "三個數之和為${res}"

}
# 調用函數
three_add 23 45 89