shell編程基本語法和變數

来源:https://www.cnblogs.com/pythonywy/archive/2019/11/12/11845442.html
-Advertisement-
Play Games

一.編寫shell腳本基本格式 拿最簡單的 舉例 . !/bin/bash:告訴電腦,使用bash解釋器來執行代碼 echo: 列印 二.運行shell腳本 (推薦使用) 三.註釋 四.定義變數 基本語法 shell 1.定義變數:變數名=變數值 2.撤銷變數:unset 變數名 3.聲明靜態變數 ...


一.編寫shell腳本基本格式

拿最簡單的hello word舉例

.#!/bin/bash       
echo 'hello world'
  • .#!/bin/bash:告訴電腦,使用bash解釋器來執行代碼
  • echo: 列印

二.運行shell腳本

方法一(推薦使用)

chmod 777 myshell.sh

#給文件許可權

./myshell.sh

#運行文件

方法2

sh myshell.sh

三.註釋

單行註釋
#內容

多行註釋
:<<!
內容
!

四.定義變數

基本語法

1.定義變數:變數名=變數值
2.撤銷變數:unset 變數名
3.聲明靜態變數:readonly 變數名     #靜態變數不能unset

將命令執行結果返回變數
1.A=`ls -la` 反引號
2.A=$(ls -la) 等價於反引號

系統變數:
    $PATH
    $HOME
    $PWD
    $SHELL
    $USER   

五.設置環境變數

基本語法

export 變數名=變數值      將shell變數輸出給環境變數
source 配置文件名稱          讓修改後的配置信息立即生效
echo $變數值                 查看環境變數的值


舉例
vim a.sh
export a = 111
:wq
source a.sh
echo $a
111

六.位置參數變數

主要是給shell腳本傳參數

$n (功能描述:n 為數字,$0 代表命令本身,$1-$9 代表第一到第九個參數,十以上的參數,十以上的參數需要用大括弧包含,如${10})

$* (功能描述:這個變數代表命令行中所有的參數,$*把所有的參數看成一個整體)

$@  (功能描述:這個變數也代表命令行中所有的參數,不過$@把每個參數區分對待)


$#(功能描述:這個變數代表命令行中所有參數的個數)

舉例

a.sh腳本裡面的內容

#!/bin/bash  

echo $2   #展示第二個參數
echo $*   #這個整體
echo $@   #這個分開for迴圈中才有提現
echo $#   #傳參的個數

執行

[root@ywy ~]# sh a.sh 1 2 3
a.sh: line 1: .#!/bin/bash: No such file or directory
2
1 2 3
1 2 3
3

七.預定義變數

就是shell設計者事先已經定義好的變數,可以直接在shell腳本中使用

$$  (功能描述:當前進程的進程號(PID))
$!  (功能描述:後臺運行的最後一個進程的進程號(PID))
$?  (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為 0,證明上一個命令正確執行;如果這個變數的值為非 0(具體是哪個數,由命令自己來決定),則證明上一個命令執行失敗)

八.變數的基本運算

運算表達式

1.$((運算式))  #$((1+1)) 不要有空格
2.$[運算式]   #$[1+1]  不要有空格
上面兩種運算符號都是普通的不要\註釋掉


這種比較特別
3.`expr m + n`  #`expr 1 + 1`  運算符之間必須要有空格 
+   #加
-   #減
/   #除
%   #取餘
\*  #乘
\(  \)  #括弧

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

-Advertisement-
Play Games
更多相關文章
  • 下載中間件 簡介 下載器,無法執行js代碼,本身不支持代理 下載中間件用來hooks進Scrapy的request/response處理過程的框架,一個輕量級的底層系統,用來全局修改scrapy的request和response scrapy框架中的下載中間件,是實現了特殊方法的類,scrapy系統 ...
  • 你好,我是彤哥,本篇是netty系列的第一篇。 歡迎來我的公從號 彤哥讀源碼 系統地學習 源碼&架構 的知識。 簡介 本文主要講述netty系列的整體規劃,並調查一下大家喜歡的學習方式。 知識點 netty系列彤哥準備分成三個大的模塊來完成: 入門篇 入門篇主要講述一些必備的基礎知識,例如IO的五種 ...
  • 一、安裝activeMQ ​ 安裝步驟參照網上教程,本文不做介紹 二、修改activeMQ配置文件 ​ broker新增配置信息 schedulerSupport="true" 三、創建SpringBoot工程 ]() 1. 配置ActiveMQ工廠信息,信任包必須配置否則會報錯 2. 消息實體類 ...
  • 1、冒泡排序 在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。 1 // 升序 2 $arr=[1,43,54,62,21,66,32,78,36,76,39]; ...
  • 由於我本地的mysql版本比較低,最近想著要升級一下mysql版本,鑒於docker容器的火熱,就想著在本地裝個docker環境,然後下載最新版的mysql鏡像,完成mysql8.0的安裝。電腦是windows 10版本。 一 啟用Hyper V 打開控制面板 程式 啟用或關閉windows功能,勾 ...
  • Spring 練習 通過學習spring的基礎知識,瞭解了Spring為了降低Java開發的複雜性,採取了以下4種關鍵策略: 基於POJO的輕量級和最小侵入性編程; 通過依賴註入和麵向介面實現松耦合; 基於切麵和慣例進行聲明式編程; 通過切麵和模板減少樣板式代碼。 下麵將做一個spring的練習de ...
  • c++ 模板類,方法返回值類型是typedef出來的,或者是auto,那麼此方法在類外面如何定義? 比如方法max1的返回值是用typedef定義出來的mint,那麼在類外如何定義這個方法呢? 嘗試1: 嘗試1的結果:編譯不過,提示不能識別mint 嘗試2: 嘗試2的結果:依然編譯不過 嘗試3: 在 ...
  • Spring之IOC容器初始化 前言 在前面我們分析了最底層的IOC容器BeanFactory,接著簡單分析了高級形態的容器ApplicationContext,在ApplicationContext 中我們知道一個核心方法 refresh,這裡面就是IOC容器的初始化流程,在前面並沒有直接去分析它 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...