初識shell腳本編程

shell的編程三種分類方式介紹,如何使用nano命令編寫一個腳本命令,及腳本命令運行的2種方式。bash的配置文件及系統啟動時加載配置文件的順序流程

shell腳本編程三種分類方式:

1、編譯語言的分類:

目前常見的編程有兩種一種是編譯運行,將源代碼通過編譯器編譯成系統可讀的語言。由于此種方式,出現錯誤不便于修復處理,后來便出現了第二種帶有項目管理程序的解釋運行方式,他能夠將一個完整的程序的所有代碼放置在多個可執行文件中,方便了以后的修復和編譯。

  • 編輯運行:?源代碼需要用編譯器轉換成系統可執行的二進制程序文件,運行程序時可直接運行無需編譯器。(例如C語言是通過調用函數庫中或類庫中的函數進行編譯,運行時無需調用外部程序)
  • 解釋運行:?源代碼運行時啟動一個(解釋器程序)由解釋器檢查通篇檢查完代碼以后,邊解釋邊運行。(例如腳本編程是完全借助于外部程序進行編程的。)

區別:

  • [x] 編譯運行:運行時效率更高,尤其是早起電腦性能底下式。
  • [x] 解釋運行:有項目管理程序,能夠將完整的程序代碼放置在多個文件中,方便程序的出錯時進行編譯。

2、編程過程中功能分類:

  • shell腳本編程:?利用系統的命令及編程組件進行編程。
  • 完整編程:?并不需要系統中事先存在的某種編譯語言。而是根據自己庫中的編程組件進行編譯。

區別:

  • [x] shell腳本編程:需要調用外部的系統中的命令及編程組件進行編程。
  • [x] 完整編程:無需調用系統中的某種編譯語言。二審根據自己褲子的

3、編程模型分類:

過程編譯語言。面向對象的編譯語言。 程序=指令+數據

  • 過程式:?以指令為中心來組織代碼,數據是服務于代碼
    • 順序執行:按命令行至上而下逐行運行。
    • 選著執行:只執行一個程序中某一段代碼其中的一部分。
    • 循環執行:把循環體中的代碼,反復執行多遍。
  • 對象式:?以數據為中心來組織代碼,圍繞數據來組織指令。

區別:

  • [x] 過程式:代表C,bash是面向過程的。
  • [x] 對象式:要事先生成數個對象,每一個對象就相當于是一種特性的數據類型。(或特定的數據模式)編程前要實現編程許多的class(類:被可實例化的對象組成) 代表有 java,C++,pythom。
shell腳本編程:過程式編程,解釋運行是依賴于外部程序文件來運行。

如何編寫shell腳本:

腳本的第一行,需要頂格寫出shebang(解釋器的路徑),用于指明需要調用的解釋執行當前腳本的解釋器程序文件。

常見的解釋器:

  • bash:—路徑位置 #!/bin/bash
  • python:路徑位置 #!/usr/bin/python
  • perl:— 路徑位置 #!/usr/bin/perl

linux按編譯界面可分為兩類:

  • 行編譯器:sed
  • 全屏幕編譯器:nano、vi、vim

編譯器注意:

  • [x] 命令行運行時如果出錯可以直觀查看。
  • [x] 在腳本中,一旦出現一個命令錯誤便會終止異常退出?,F實中很多命令都不是冪等性的,以免運行中不冪等性程序終止。這里就需要選著執行、循環執行、順序執行。
  • [x] 并不是每個shell腳本執行出錯都會退出除非exit命令或者寫入的某種判斷機制退出。(語法錯誤也會退出的)
    不冪等性:就是命令不可重復執行,如果重復執行便會報錯。例如useradd、mkdir、
    冪等性:命令可以重復執行,例如echo、ls、mktemp、date、

編寫shell命令:nano

如果編寫對象存在會直接打開,如果存在便創建然后打開。

寫腳本示例:

1、創建一個/tmp/fstab

image

2、編輯內容?創建用戶centos?顯示系統時間 按ctrl+o(保存) ,ctrl+x(退出)

image

3、執行2遍查看返回值

useradd是非冪等性–多次執行報錯
date則是冪等性–可執行多次

image

shell腳本是什么?

:是由多個執行單一操作的命令組合堆積在一起。由于很多命令不具有冪等性,需要用程序邏輯來判斷運行條件是否滿足,以免其運行中發生錯誤。

運行腳本:

(1) 賦權執行權限,并直接運行此程序文件。?*?chmod +x /PATH/TO/SCRIPT_FILE

  • /PATH/TO/SCRIP_FILE

(2) 直接運行解釋器,將腳本命令參數傳遞給解釋器。?*?bash /PATH/TO/SCRIPT_FILE

區別:

  • [x] 賦權執行需要在腳本中首行頂頭位幾個字節來判斷文本類型。由標準格式#!后面指定的解釋器執行每行代碼。需要事前給與文本指定執行用戶的權限。
  • [x] 直接運行解釋器無需在腳本中首行輸入指定的解釋器,是將編寫的腳本當作bash的參數來運行。也無需運行文本權限。

注意:

  • [x] shell腳本中的一行的空格會被忽略,如果想要加入空格可在空格的上一行鍵入echo即可。
  • [x] #號開頭的文字都會被認定為注視行被忽略。
  • [x] shell腳本的運行是通過一個bash的子shell進程來實現的。

示例 :直接運行解釋

打開一個腳本文件 Notes. sh

image

編輯界面注意首行沒有指定外部的解釋器。每句下面一行都留有空格行還有最后一句的#號

image

驗證了# 、于空白行都被忽略了

image

示例 : 賦權執行權限

創建文件Ga. sh

image

編輯命令首行輸入標準格式

image

授權給文件執行權限并退出系統

image

重新登陸查看效果

image


bash的配置文件:

由于bash的特性避免bash的聲明周期結束時,配置文件也同時隨之結束。可以通過將bash寫入配置文件中來突破生命周期。bash的配置文件分為量兩類:

  • profile類:為交互式登錄的shell的進程提供配置。
  • bashrc 類:非交互式登錄的shell的進程提供配置。

登錄類型:

  • 交互式登錄的shell進程:
    • 直接登錄console、pst、tty、ttys、任意一種終端輸入賬號和密碼后登錄打開的shell進程,
    • 使用su命令:su USERNAME 或 su – USERNAME(登錄式)執行切換。
  • 非交互式登錄shell進程:
    • su SUERNAME執行的用戶登錄切換。
    • 圖形界面下打開的終端
    • 運行腳本。

profile類文件:

Cento 系統把很多的配置文件切割成主配置文件和配置文件放置在.d 或者.sh文件中,

全局配置:?對所有用戶有效。?/etc/profile?/etc/profile.d/*.sh

用戶個人:?僅對當前用戶有效 *?~/.bans_profile

~:表示家目錄

功用:

  • 1、用來定義環境變量,【將配置文件定義到profile下,每次運行時都打開】
  • 2、運行命令或腳本,【也是通過profile】

bashrc類型:

用于定義本地變量和命令別名

全局:?*?/etc/bansrc

用戶個人:?*?~/.bashrc

~:表示家目錄

功用:

  • 1、定義本地變量。在bansrc內,
  • 2、定義別名。

shell進程加載配置流程圖:

image

image

注意:

  • 僅有管理員有權限修改全局配置文件。
  • 當前用戶編寫的腳本不會立即生效需,只有在下次用戶登陸進程才有效。
  • 為了方便日后對腳本的管理,可以在文件特定的文件內新建一個以sh結尾的配置文件。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90078

(0)
N28_剛好遇到小熊貓N28_剛好遇到小熊貓
上一篇 2017-12-14
下一篇 2017-12-15

相關推薦

  • Linux進程篇16.2pstree命令:【進程樹】

    pstree命令:【進程樹】

    Linux干貨 2017-12-18
  • liunx學習第一天知識點-基礎知識

    一 計算機組成 1. 馮·諾依曼體系:     1946年數學家馮·諾依曼于提出計算機由五大部分組成:運算器、控制器、存儲器、輸入設備、輸出設備 2. 摩爾定律:     戈登·摩爾于1965年提出來當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,…

    Linux干貨 2016-07-27
  • 文本處理三劍客之sed及vi編輯使用

    作用:       sed是Linux系統文本處理工具中的三劍客之一,它是一種流編輯器,以行為單位,能夠使用正則表達式;跟其他文本處理工具模式相同,不對原文件直接操作,而是先借用一個臨 時的數據緩沖區存放文文本數據,同時還有一個自己獨特的空間"pattern space",我們稱之為sed的模式空間,它的處理…

    Linux干貨 2016-08-11
  • 系統管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生產環境中的服務器在處理請求并生成回應數據的時間主要消耗在服務器端,包括了眾多的環節,如何全面了解我們linux服務器的CPU使用率、使用時間、內存占用比例、磁盤IO數據、網絡相關數據等等眾多指標,保證我們的linux服務器順利完成每一個請求,怎能沒有幾個趁手的利刃,而今天就讓我們見識一下系統管理中三大利刃。 相傳一把三尺長的軟劍,叫…

    Linux干貨 2015-11-18
  • shell腳本之條件測試

    組合條件測試:在多個條件間實現邏輯運算     與:[ condition1 -a condition2 ]、condition1 && condition2     或:[ condition…

    Linux干貨 2015-08-24
  • 第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理類命令:cp,mv,rm 常用的使用方法: cp命令: 單源復制: cp [OPTION]…[-T] SOURCE DEST 多源復制: cp [OPTION]… SOURCE …DIRECTORY cp [OPTION]… …

    Linux干貨 2017-02-06
欧美性久久久久