Shell指令碼(一)

來源:互聯網
上載者:User

標籤:linux shell指令碼基礎篇

1.    簡介

shell(殼)是linux系統中用於將使用者執行的命令解析成電腦能夠執行的代碼,然後交給核心由核心進行執行。通過/etc/shells檔案中可以查看該linux系統所支援的shell種類。

shell指令碼就是將平時寫的一些命令按一定順序儲存到檔案中,然後在賦予該檔案執行許可權就是一個shell指令碼。

2.    shell指令碼的格式

[[email protected] ~]# vi shell.sh            //使用vi編輯器進行編寫shell指令碼
#!/bin/bash                                        //指定所指定的那種shell
#this is a test shell scripts                //對該指令碼的說明
x=1
echo $x                                        //為該指令碼的內容

3.    shell指令碼的有以下幾種執行方式

1)    [[email protected] ~]# sh shell.sh
       1
2)    [[email protected] ~]# . shell.sh
       1

3)    [[email protected] ~]# source shell.sh
       1

4)    [[email protected] ~]# ./shell.sh            
        -bash: ./shell.sh: 許可權不夠
        [[email protected] ~]# chmod a+x ./shell.sh
        [[email protected] ~]# ./shell.sh                    //直接執行需要給該檔案授予執行許可權
        1
4.    linux在處理資料時有下面幾種互動裝置檔案

標準輸入(STDIN)  檔案裝置編號為 0

標準輸出(STDOUT)    檔案裝置編號為 1

標準錯誤(STDERR)    檔案編號為 2

5.    重新導向

重新導向:如原本將標準輸出的資料顯示到螢幕,但是通過重新導向“>”符號將標準資料的檔案傳送到指定的檔案中。

[[email protected] ~]# cat ./shell.sh > cdx.txt                        //大於符號表示標準輸出
[[email protected] ~]# cat cdx.txt                
#!/bin/bash
#this is a test shell scripts
x=1
echo $x

[[email protected] ~]# ls -l /jjj 2> stderr.txt                        //通過檔案編號2將上重新導向符號將錯誤資訊匯入到指定檔案中
[[email protected] ~]# cat stderr.txt
ls: 無法訪問/jjj: 沒有那個檔案或目錄
[[email protected] ~]# echo "abc123" > passwd.txt
[[email protected] ~]# passwd --stdin test < passwd.txt    //通過通過小於符號將秘鑰匯入到test帳號中

6.    管道符號

可以將前一個命令的值作為後一個命令的參數,可以對該值進行連續操作。

[[email protected] ~]# ifconfig eth0 | grep "HWaddr" | awk ‘{print $5}‘
00:0C:29:3A:A0:9A
7.    shell變數

shell變數有下列幾種變數:1.自訂變數    2.環境變數    3.位置變數    4.預定義變數

1)    自訂變數,使用者可以直接賦值

[[email protected] ~]# a=1                    //直接給a賦值為1
[[email protected] ~]# echo $a
1

2)    變數和賦值使用的特殊符號

雙引號""當賦值的時候有空格時需要通過雙引號指定為一個整體

[[email protected] ~]# b="abc def"
[[email protected] ~]# echo $b
abc def

單引號賦值的時候有特殊字元時,需要通過單引號將括弧中的特殊變成一般字元[[email protected] ~]# [[email protected] ~]# d=‘$abc‘                
[[email protected] ~]# echo $d
$abc
反撇號和“$()”可以對括弧中的語句先執行

[[email protected] ~]# rpm -qf $(which cat)
coreutils-8.4-19.el6.i686
[[email protected] ~]# rpm -qf `which cat`
coreutils-8.4-19.el6.i686

3)    位置變數

他根據參數的位置分為$1,$2,$3......$9,$0為命令的變數。

[[email protected] ~]# vi expr.sh
#!/bin/bash
#express scripts
expr $1 + $2                //指定$1和$2

[[email protected] ~]# sh expr.sh 12 23      //給$1和$2賦值
35                    //計算結果

4)        預定義變數

$?:查看上一個命令執行的狀態,如果值為0 表示命令執行完成。如果值為非0 表示上一個命令執行時有問題

$0:表示當前執行的指令碼或程式的名稱。

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

$*:表示所有位置參數的內容

本文出自 “知識是智慧的火炬” 部落格,轉載請與作者聯絡!

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.