LinuxShell——認識Shell腳本

来源:https://www.cnblogs.com/shamao/archive/2019/07/18/11209452.html
-Advertisement-
Play Games

LinuxShell——認識Shell腳本 摘要:本文主要介紹了Shell腳本的一些基本知識。 什麼是Shell腳本 shell腳本是利用shell的功能所寫的一個程式,這個程式是使用純文本文件,將一些shell的語法與指令寫在裡面,然後用正規表示法,管道命令以及數據流重導向等功能,達到所想要的處理 ...


LinuxShell腳本——認識Shell腳本

摘要:本文主要介紹了Shell腳本的一些基本知識。

什麼是Shell腳本

shell腳本是利用shell的功能所寫的一個程式,這個程式是使用純文本文件,將一些shell的語法與指令寫在裡面,然後用正規表示法,管道命令以及數據流重導向等功能,達到所想要的處理目的。

shell腳本就像早期dos年代的.bat,最簡單的功能就是將許多指令彙整寫一起,讓使用者很容易地就能夠一個操作執行多個命令,而shell腳本更是提供了數組、迴圈、條件以及邏輯判斷等重要功能,讓使用者可以直接以shell來寫程式。

基本結構

#!/bin/bash

這句話的作用是標明我以下寫的腳本使用的是BASH語法,只要寫的是基於BASH的Shell腳本都應該這樣開頭。

在Linux中預設的Shell環境就是BASH,所以在Linux裡面不加這一句也可以運行。如果把腳本放在預設環境不是BASH的環境中運行,又或者編寫腳本的不是純BASH語言,而是嵌入了其他語言,那麼這個腳本就不能正確執行了。所以Shell腳本都必須以“#!/bin/bash”開頭。

註釋

在Shell腳本中,除“#!/bin/bash”這行外,其他行只要以“#”開頭的都是註釋。

程式的主體

Linux的命令可以直接在腳本中執行。

執行腳本

賦予執行許可權,直接運行

這種方法是最常用的Shell腳本運行方法,也最為直接簡單。就是賦予執行許可權之後,直接運行。當然,運行時可以使用絕對路徑,也可以使用相對路徑。

如果將shell.sh放在PATH指定的目錄內,這樣就可以像Linux系統命令一樣,不用指定路徑直接運行了。

賦予執行許可權:

1 [root@localhost sh]# chmod 755 shell.sh

使用絕對路徑執行:

1 [root@localhost sh]# /root/sh/shell.sh

使用相對路徑執行:

1 [root@localhost sh]# ./shell.sh

通過bash命令調用運行腳本

這種方法的意思是直接使用bash或者sh去解釋腳本中的內容,所以這個腳本也可以正常運行。使用這種方法運行腳本,甚至不需要腳本文件有“執行”許可權,只要擁有“讀”權就可以運行了。

因為/bin/sh其實就是/bin/bash的一個鏈接,使用 sh shell.sh 就是告訴系統想要直接以bash的功能來執行shell.sh。

使用bash命令執行:

1 [root@localhost sh]# bash shell.sh
2 [root@localhost sh]# sh shell.sh

使用source命令執行

source命令或者“.”命令可以讀入腳本並執行腳本,即在當前Shell環境中載入並執行的相關腳本文件的命令及語句,而不是產生一個子Shell來執行文件中的命令。

該命令主要用於讓重新配置的環境變數配置文件強制生效。

使用source命令執行:

1 [root@localhost sh]# . shell.sh
2 [root@localhost sh]# source shell.sh

編寫一個腳本並執行

編寫腳本

使用vim命令創建並修改腳本文件:

1 [root@localhost ~]# vim test.sh

在vim編輯器里輸入腳本內容並保存:

1 #!/bin/bash
2 echo "Hello World"

執行腳本

使用sh命令執行腳本:

1 [root@localhost ~]# sh test.sh
2 Hello Word
3 [root@localhost ~]# 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • TextBox雙向綁定int屬性,清空輸入框時Setter方法未觸發。 我的解決方案: 1、屬性置為int?; 2、xmlns:sys="clr-namespace:System;assembly=mscorlib" 3、Text="{Binding Number,Mode=TwoWay,Targe ...
  • private delegate void de_OutputMessage(string str); public void OutputMessage(string str) { if (textBoxMessage.InvokeRequired) { this.BeginInvoke(new ...
  • .NET Core CSharp 初級篇 1 1 本節內容是對於C 基礎類型的存儲方式以及C 基礎類型的理論介紹 基礎數據類型介紹 例如以下這句話:“張三是一名程式員,今年15歲重50.3kg,他的代號是‘A’,他家的經緯度是(N30,E134)。”,這句話就是一個字元串,使用雙引號括起來。而15則 ...
  • 受 F 中的管道運算符和 C 中的 LINQ 語法,管道式編程為 C 提供了更加靈活性的功能性編程。通過使用 擴展函數 可以將多個功能連接起來構建成一個管道。 前言 在 C 編程中,管道式編程(Pipeline Style programming)其實存在已久,最明顯的就是我們經常使用的 LINQ。 ...
  • 管道符、重定向與環境變數&vim編輯器 輸入輸出重定向 標準輸入重定向(STDIN,文件描述符為0):預設從鍵盤輸入,也可從其他文件或命令中輸入。 標準輸出重定向(STDOUT,文件描述符為1):預設輸出到屏幕。 錯誤輸出重定向(STDERR,文件描述符為2):預設輸出到屏幕。 輸入輸出重定向 標準 ...
  • 必須掌握的Linux命令 系統狀態檢測命令 1.ifconfig命令 ifconfig命令用於獲取網卡配置與網路狀態等信息,格式為“ifconfig [網路設備] [參數]”。 使用ifconfig命令來查看本機當前的網卡配置與網路狀態等信息時,其實主要查看的就是網卡名稱、inet參數後面的IP地址 ...
  • 部署虛擬環境安裝linux系統以及一些常用命令 工具: VmwareWorkStation 12.0——虛擬機軟體(必需) RedHatEnterpriseLinux [RHEL]7.0——紅帽操作系統(必需) vmware虛擬機提供的3種可選的網路模式 橋接模式:相當於在物理主機與虛擬機網卡之間架 ...
  • 認識linux 開源共用精神 低風險 高品質 低成本 更透明 開源軟體的特點 使用自由、修改自由、傳播自由、收費自由以及創建衍生品的自由 常見的開源許可協議 GNU GPL(GNU General Public License,GNU通用公共許可證):只要軟體中包含了遵循GPL協議的產品或代碼,該軟 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...