Linux shell 指令碼(一)

來源:互聯網
上載者:User

標籤:linux shell   shell指令碼   shell   

一、初識指令碼 shell:一類介於系統核心與使用者之間的解釋程式。
指令碼:一類使用特定語言,按預設順序執行的檔案
批處理、宏、解釋型程式

建立shell指令碼:
理清任務過程--整理執行語句--完善檔案結構
1.任務目標    1.按任務順序        1.執行環境
2.先做什麼    2.必要的結構控制 2.必要的注釋資訊
3.再做什麼    3.如何免互動        3.友好的提示
4.每一步如何?

例子:
1)理清任務過程
1.添加一個名為zhangsan的使用者
添加一個名為zhangsan的使用者

useradd zhangsan

2.將使用者zhangsan的口令設定為123456

passwd zhangsan


2)整理執行語句
useradd zhangsan

echo 123456| passwd --stdin zhangsan


3)完善檔案結構
指令檔:uad.sh
#!/bin/bash
#2015-04-12,by Moon
echo "正在建立使用者帳號zhangsan..."
useradd zhangsan
echo "正在為使用者zhangsan設定密碼..."
echo 123456|passwd --stdin zhangsan 

echo "建立成功。"


4)執行shell指令碼
方法:1. chmod +x uad.sh
             ./uad.sh
         2.  sh/bash uad.sh

         3.  source/. uad.sh


二、shell命令的組合運用管道操作:將一端的命令輸出交給另一端的命令處理  方向:單向
格式:命令1|命令2

例子:

1.

find /etc -name "*.conf"  -type f  //尋找以.conf結尾的檔案

 /etc/autofs_ldap_auth.conf
 .. ..
    find /etc -name "*.conf"  -type f | wc -l   //wc統計 -l按行統計
    308 

2.

ps aux | grep httpd  //gerp 過濾只剩與httpd相關的資訊


重新導向:改變執行命令時的預設輸入、輸出

 類型             |     操作符   |用途
重新導向輸入    |<               |從指定檔案讀取資料,而不是從鍵盤輸入    
重新導向輸出    | >、>>      |將輸出結果覆蓋、追加到指定檔案
標準錯誤輸出 |2>、2>>   |將錯誤資訊覆蓋、追加到指定檔案
混合輸出        |&>、&>> |將標準輸出和錯誤資訊覆蓋、追加到指定檔案

例子:

1.

uname -r  //linux 核心版本資訊

2.6.18-194.el5
uname -r > version.txt  //版本資訊儲存到了version.txt

2.

cat version.txt version2.txt

2.6.18-194.el5
cat:version2.txt:沒有那個檔案或目錄

cat version.txt version2.txt 2>error.txt   //把錯誤資訊儲存到error.txt中
2.6.18-194.el5
cat error.txt
cat:version2.txt:沒有那個檔案或目錄

邏輯分隔:處理多條命令之間的邏輯關係
邏輯與:&&
邏輯或:||
順序執行::
例子:

1.

echo "蘿蔔" && echo "白菜"

蘿蔔
白菜

echo "蘿蔔"||echo "白菜"


2.

mkdir /mulu/a  2>/dev/null && echo "成功"

   mkdir /mulu/a  2>/dev/null ||echo "失敗"

   失敗!


3.

cd /boot/grub:ls -lh grub.comf   //-h意味著便於人操作



三、使用變數1.變數基本操作:
定義與賦值:格式:變數名=變數名
引用變數:格式:$變數名 、${變數名}

例子:

Title = Moon

 echo $Title
 Moon
 
 2、定界符號
 雙引號、單引號、反撇號
 雙引號:允許引用,\轉義
 單引號:禁止引用、轉義
 反撇號,或者$()
 以命令輸出進行替換
 
 例子:
 1.
 echo "$Title group"
 Moon group
 
 echo ‘$Title group‘
 $Title group 
 

 2.

uname -r 

 2.6.18-194.el5
 
 Ver=`uname -r `
 echo $ver
 2.6.18-194.el5
 
3.常見的環境變數
用來記錄/設定運行參數
系統賦值:USER、LOGNAME、HOME、SHELL、......
使用者操作: PATH、LANG、CLASSPATH、.....

例子:

1.
env     #列出所有環境變數
HOSTNAME=pc05.benet.com
SHELL=/bin/bash
HOME=/root
LOGNAM=root
.. ..
2.echo $USER  $HOME SHELL 
zhangsan /root  SHELL 


echo $LANG 
zh_CN.UTF-8


其他特殊變數:
由系統或指令碼操控,不可直接賦值:
$?:前一條命令的狀態值,0為正常、非0異常
$0:指令碼自身的程式名或路徑
$1-$9:第一-第九個位置命令的參數
$* :命令列的所有位置參數的內容

$#:命令列的位置參數個數


例子:
1.
mkdir  /mulua
echo $?
0

mkdir /mulu/a
mkdir:無法建立目錄 “/mulu/a”:沒有那個檔案或目錄
echo $?
1   

2.

cat test.sh

#!/bin/bash
echo “本程式名:$0”
echo "執行時一共輸入$#個位置參數"
echo “其中第一個參數是:$1”
echo “所有參數如下:$*”

./test.sh  Hello Everyday!
  
本程式名:./test.sh
執行時一共輸入2個位置參數
其中第一個參數是:Helo
所有參數如下:Hello Everyday!

四、數值運算及處理1.整數運算操作:
使用expr命令,計算運算式
格式:expr 數值1 操作符 數值2

使用$[]運算式,算式提換
格式:$[數值1 操作符 數值2]

例子:
1.
expr 45+21
66
expr 45-21
23
expr 45\*21  #shell 中 把* 當成萬用字元,所以應該轉義下
945
expr 45/21
2
expr 45%21
3
X=45;Y=21;expr $X-$Y
24

2.
echo $[45+21] 
66
echo $[45*21]
945

X=45;Y=21;echo $[X-Y]
24

2.幾個數值處理技巧
變數的遞更處理
格式:let 變數名++、 let變數名--

使用隨機數
RANDOM 變數

產生數字序列
格式:seq 首數 末數、 seq 首數 增量 末數

例子:
1.
X=45;Y=21
let X++;echo $X
46
let Y--;echo $Y
20 

let X+=2;echo $X 
48

2.
echo $RANDOM      #RANDOM 變數的取值範圍為0-32767 
4411
echo $RANDOM
26911


echo $[RANDOM%100]
54
echo $[RANDOM%100]
83

3.
seq 3  #第一個數是從1 開始的 1 可以省略 
1
2


seq 3 5




seq   3  2 10 

5  



小數運行操作:
將運算式給bc命令處理

例子:
echo “45.67-21” | bc
24.62

echo "scale=4;10/3" | bc #通過scale來約束小數位
3.3333

Linux shell 指令碼(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.