天天看點

第十講 shell 腳本簡介第十講 shell 腳本簡介

第十講 shell 腳本簡介

文章目錄

  • 第十講 shell 腳本簡介
    • 一、 shell 腳本簡介
      • shell 腳本是什麼
      • shell 腳本有什麼用
      • shell 指令本質
      • 建立一個 helloworld 指令
      • shell 腳本語言與 c 語言的差別
      • 建立一個 shell 腳本
      • shell 腳本的啟動方式

一、 shell 腳本簡介

shell 腳本是什麼

shell 腳本與 windows 下的批處理相似,就是将各類指令預先放到一個檔案中,友善一次性執行的一個程式檔案。百度百科

是由 shell 指令按一定文法組成的檔案。

shell 腳本有什麼用

  • 批處理檔案/整合指令
  • 軟體啟動
  • 性能監控
  • 日志分析

shell 指令本質

内置指令/外部指令

可以通過

type

指令檢視指令是否是内置指令

例如:

type cd

傳回的是:cd is a shell builtin

type ifconfig

傳回的是:ifconfig is /sbin/ifconfig

shell 指令是通過預設的路徑去查找指令,指令的路徑在 PATH 變量當中,可以通過指令

echo $PATH

可以列印目前的預設的路徑

建立一個 helloworld 指令

  1. 輸入指令

    vim shell_helloword.c

    建立檔案
  2. 輸入以下代碼
    #include <stdio.h>
    int main(void) 
    {
        printf("hello world!\n");
        return 0;
    }
               
  3. 儲存退出編輯器
  4. 編譯 shell_helloword.c 檔案(

    gcc -o shell_helloword shell_helloword.c

  5. 輸入指令

    sudo cp shell_helloword /usr/local/bin/

    将檔案 shell_helloword 複制到 PATH 的任意路徑中(注意:這裡不知道路徑的直接複制我打的這句話就行,需要管理者權限)
  6. 然後在終端輸入

    shell_helloword

  7. 終端傳回:hello world!
  8. 腳本成功!!!
  9. 最後試驗成功将我們複制進去的東西删掉

    sudo rm -rfv /usr/local/bin/shell_helloword

    (PS:rm 指令不要亂用,特别是加了 sudo 的,否則删除整個系統就不好了)

shell 腳本語言與 c 語言的差別

shell 腳本語言是一種解釋型語言,c 語言是一種編譯型語言

有關編譯型和解釋性語言差別可以看這:編譯型語言和解釋型語言差別,總的來說就是編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的檔案,之後如果要運作時,直接使用編譯結果,而解釋型語言是代碼在執行時才被解釋器一行行動态翻譯和執行。

Linux shell 解釋器

檢視 Linux 内的 shell 解釋器可以用指令

cat /etc/shells

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
           

建立一個 shell 腳本

  1. 建立檔案 shellscript.sh (

    vim shellscript.sh

  2. 輸入以下代碼
    #!/bin/bash
    echo "hello word!\r\n"
               
  3. 儲存并退出檔案
  4. 給檔案添加可執行權限(

    sudo chmod +x shellscript.sh

  5. 在終端輸入指令

    ./shellscript.sh

    執行腳本檔案
  6. 得到輸出結果

    hello word!\r\n

  7. 腳本建立完成

shell 腳本的啟動方式

  • 當程式運作

    ./shellscript.sh

  • 指定解釋器運作

    /bin/bash shellscript.sh

    /bin/rbash shellscript.sh

  • source 指令 和

    .

    source shellscript.sh

    . shellscript.sh

繼續閱讀