1. 程式人生 > 實用技巧 >Centos常用命令(六、shell程式設計)

Centos常用命令(六、shell程式設計)

16.Shell 程式設計(大資料定製篇)
1)Shell 介紹
Shell 是一個命令列直譯器,它為使用者提供了一個向 Linux 核心傳送請求以便執行程式的介面系統級程式,使用者可以用 Shell 來啟動、掛起、停止甚至是編寫一些程式。示意圖:

2)shell 程式設計快速入門-Shell 指令碼的執行方式
(1)指令碼格式要求:
①指令碼以#!/bin/bash 開頭
②指令碼需要有可執行許可權
案例:建立一個 Shell 指令碼,輸出 hello world!
①vim hello.sh //編寫指令碼檔案

!/bin/bash

echo "hello wold"

②chmod 744 hello.sh 賦予可執行許可權
③./hello.sh

(2)方式 2(sh+指令碼),不推薦
說明:不用賦予指令碼+x 許可權,直接執行即可

3)shell 的變數
(1)Shell 的變數的介紹:
①Linux Shell 中的變數分為,系統變數和使用者自定義變數。
②系統變數:$HOME、$PWD、$SHELL、$USER 等等比如: echo $HOME 等等
③顯示當前 shell 中所有變數:set
(2)shell 變數的定義
①基本語法:
定義變數:變數=值
撤銷變數:unset 變數
宣告靜態變數:readonly 變數,注意:不能 unset
②案例:
案例 1:定義變數 A
案例 2:撤銷變數 A
編寫指令碼:

!/bin/bash

A=100
echo "A=$A"
echo ""
unset A
echo "A=$A"
顯示效果:

案例 3:宣告靜態的變數 B=2,不能 unset
編寫指令碼:

!/bin/bash

readonly B=2
echo "B=$B"
unset B
echo "B=$B"

執行報錯,靜態變數B不可撤銷

④小貼士:多行註釋
:<< i
A=100
echo "A=$A"
echo ""
unset A
echo "A=$A"
i

(3)定義變數的規則
①變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。
②等號兩側不能有空格
③變數名稱一般習慣為大寫
(4)將命令的返回值賦給變數(重點
①A=ls -la 反引號,執行裡面的命令,並把結果返回給變數 A
②A=$(ls -la) 等價於反引號
案例:
編寫指令碼:

!/bin/bash

RESULT=ls -l /home


echo "result=$RESULT"
MY_DATE=$(date)

echo "date=$MY_DATE"
執行結果:

4)設定環境變數
(1)基本語法
①export 變數名=變數值 (功能描述:將 shell 變數輸出為環境變數)
②source 配置檔案 (功能描述:讓修改後的配置資訊立即生效)
③echo $變數名 (功能描述:查詢環境變數的值)

(2)快速入門
①在/etc/profile 檔案中定義 TOMCAT_HOME 環境變數
編寫:

!/bin/bash

TOMCA_HOME=/opt/tomcat
export TOMCAT_HOME

②重新載入修改過的/etc/profile 檔案或重啟
source /etc/profile

③檢視環境變數 TOMCAT_HOME 的值
echo $TOME_HOME

④在另外一個 shell 程式中使用 TOMCAT_HOME
編輯hello.sh

執行結果:

5)位置引數變數
(1)介紹
當我們執行一個 shell 指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數,比如 : ./myshell.sh 100 200 , 這個就是一個執行 shell 的命令列,可以在 myshell 指令碼中獲取到引數資訊
(2)基本語法
①$n (功能描述:n 為數字,$0 代表命令本身,$1-$9 代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如${10})
②$* (功能描述:這個變數代表命令列中所有的引數,$*把所有的引數看成一個整體)
③$@(功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)
④$#(功能描述:這個變數代表命令列中所有引數的個數)

①②③④⑤