Shell編程學習之變量的使用

  • 查看當前系統使用的命令解釋器:
linux@ubuntu:~$ echo $SHELL
/bin/bash
  • shell命令:
  • 在終端上使用的命令,例如
 vi a.cgcc a.c./a.out
  • shell腳本:
  • 其是一個.sh文件,里面都是命令的集合,以及一些復雜的邏輯;
  • 執行shell腳本的三種方式:
  • ./腳本名
  • bash 腳本名
  • source 腳本名
  • 腳本中的變量命名規范:
  • 由數字、字母、下劃線構成;
  • 不能以數字開頭;
  • 不能和shell語言的關鍵字沖突;
  • 一般情況下,變量的英文字母要大寫;
  • 引用變量值:
  • $變量名OR${變量名};例如:
K1=welcometobeijing
echo $K1
  • 清空變量值:
  • unset 變量名;例如:
unset K1
  • 測試腳本:
#!/bin/bashK1=WELCOMETOBEIJING
echo $K1K2="WELCOME TO BEIJING"
echo $K2
K3="WELCOME TO HENAN"
echo $K3K4="HI $K2"
echo $K4K5="HELLO $K3 HAVE FUN"
echo $K5K6="${K1}HEVE A GOOD TIME"
echo $K6K7=$K1
echo $K7unset K1
K8=$K1
echo $K8
  • 運行結果:
WELCOMETOBEIJING
WELCOME TO BEIJING
WELCOME TO HENAN
HI WELCOME TO BEIJING
HELLO WELCOME TO HENAN HAVE FUN
WELCOMETOBEIJINGHEVE A GOOD TIME
WELCOMETOBEIJING
  • 位置變量:
  • 類比C語言中的main函數兩個參數argc和argv;
  • $0:#(shell注釋符號)有三種執行方式:
  • 1、./腳本名:結果:./腳本名
  • 2、bash 腳本名:結果:腳本名
  • 3、source 腳本名:結果:bash;
  • $1 ~$9:執行腳本時,命令行傳遞的是第一個至第九個參數,超過9,就需要加{},例如:${15};
  • $@:命令行的所有參數(不包含腳本名字),同理,$*也是這樣的作用;
  • $#:命令行的所有參數的個數(不包含腳本名字);
  • $$:執行腳本的進程號PID
  • $?:判斷上一條命令執行是否成功,結果為0,則成功,為1,則失敗;
  • 變量的作用域:
  • 默認是全局;
  • 定義局部變量,需要在變量名增加local來修飾(注意和變量名之間存在空格);
  • 測試腳本:
#!/bin/bashfunction peter(){K1=WANGWUlocal K2=TAIHANGecho $K2 #TAIHANG}peter #調用函數
echo $K1 #WANGWU
echo $K2 #空
  • 運行結果:
TAIHANG
WANGWU
  • 只讀變量:
  • 需要使用readonly關鍵字修飾;
  • 不能給只讀變量賦值,會報錯,例如:
readonly K1=YUCHUAN
K1=HAUNGHE 
echo $K1 #報錯
  • 命令置換符:
  • 把命令執行的結果賦值給變量;
  • $()和反引號``,例如:
K1=$(ls -l)
echo $K1
K2=`ping 192.168.2.88`
echo $K2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39877.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RuntimeException詳解

當我們談論Java編程中的異常處理時,RuntimeException是一個關鍵的概念,它在代碼開發和維護中扮演著重要的角色。本文將深入探討RuntimeException,了解它的特點、使用場景以及如何在代碼中處理它。 什么是RuntimeException? 在Ja…

復合 類型

字符串和切片 切片 切片的作用是允許你引用集合中部分連續的元素序列,而不是引用整個集合。 例如: let s String::from("hello world");let hello &s[0..5]; // 切片 [0,5) 等效于&s[..5] let world &s[6..11]; // 切片…

線性動態規劃入門之挖地雷

P2196 [NOIP1996 提高組] 挖地雷 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 這個題有點坑,就是說你只能往下挖,可以理解成單項路徑。比如1與3之間是1代表1可以到3而3不可以到1。所以我們來思考dp把。怎么寫?我們這么想假設1與2&#xf…

gitee上傳一個本地項目到一個空倉庫

gitee上傳一個本地項目到一個空倉庫 引入 比如,你現在本地下載了一個半成品的框架,現在想要把這個本地項目放到gitee的倉庫上,這時就需要我們來做到把這個本地項目上傳到gitee上了。 具體步驟 1. 登錄碼云 地址:https://gite…

【Pytroch】基于支持向量機算法的數據分類預測(Excel可直接替換數據)

【Pytroch】基于支持向量機算法的數據分類預測(Excel可直接替換數據) 1.模型原理2.數學公式3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 支持向量機(Support Vector Machine,SVM)是一種強大的監督學習算法,用于二分類和多分類問題。它的主要思想是找…

【數據結構】樹和二叉樹的概念及結構

1.樹概念及結構 1.1樹的概念 樹是一種非線性的數據結構,它是由n(n>0)個有限結點組成一個具有層次關系的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。 有一個特殊的結點&#…

Spring Boot 中的 AOP,到底是 JDK 動態代理還是 Cglib 動態代理

大家都知道,AOP 底層是動態代理,而 Java 中的動態代理有兩種實現方式: 基于 JDK 的動態代理 基于 Cglib 的動態代理 這兩者最大的區別在于基于 JDK 的動態代理需要被代理的對象有接口,而基于 Cglib 的動態代理并不需要被代理對…

list

目錄 迭代器 介紹 種類 本質 介紹 模擬實現 注意點 代碼 迭代器 介紹 在C中,迭代器(Iterators)是一種用于遍歷容器(如數組、vector、list等)中元素的工具 無論容器的具體實現細節如何,訪問容器中的元素的方…

在ubuntu中將dict.txt導入到數據庫sqlite3

將dict.txt導入到數據庫 #include <head.h> #include <sqlite3.h> int do_insert(int i,char *str,sqlite3 *db); int main(int argc, const char *argv[]) {//創建泵打開一個數據庫sqlite3 *db NULL;if(sqlite3_open("./my.db",&db) ! SQLITE_OK){…

【TI-CCS筆記】工程編譯配置 bin文件的編譯和生成 各種架構的Post-build配置匯總

【TI-CCS筆記】工程編譯配置 bin文件的編譯和生成 各種架構的Post-build配置匯總 TI編譯器分類 在CCS按照目錄下 有個名為${CG_TOOL_ROOT}的目錄 其下就是當前工程的編譯器 存放目錄為&#xff1a; C:\ti\ccs1240\ccs\tools\compiler按類型分為五種&#xff1a; ti-cgt-arm…

2023年排行前五的大規模語言模型(LLM)

2023年排行前五的大規模語言模型(LLM) 截至2023年&#xff0c;人工智能正在風靡全球。它已經成為熱門的討論話題&#xff0c;吸引了數百萬人的關注&#xff0c;不僅限于技術專家和研究人員&#xff0c;還包括來自不同背景的個人。人們對人工智能熱情高漲的原因之一是其在人類多…

CS5263替代停產IT6561連接DP轉HDMI音視頻轉換器ASL 集睿致遠CS5263設計電路原理圖

ASL集睿致遠CS5263是一款DP1.4到HDMI2.0b轉換器芯片&#xff0c;設計用于將DP1.4源連接到HDMI2.0b接收器。 CS5263功能特性&#xff1a; DP接口包括4條主通道、輔助通道和HPD信號。接收器支持每通道5.4Gbps&#xff08;HBR2&#xff09;數據速率。DP接收機結合了HDCP1.4和HDCP…

NVIDIA Omniverse與GPT-4結合生成3D內容

全球各行業對 3D 世界和虛擬環境的需求呈指數級增長。3D 工作流程是工業數字化的核心&#xff0c;開發實時模擬來測試和驗證自動駕駛車輛和機器人&#xff0c;操作數字孿生來優化工業制造&#xff0c;并為科學發現鋪平新的道路。 如今&#xff0c;3D 設計和世界構建仍然是高度…

C#的 Settings.Settings配置文件的使用方法

1、定義 在Settings.settings文件中定義配置字段。把作用范圍定義為&#xff1a;User則運行時可更改(用戶范圍的字段數據更改存儲在用戶信息中&#xff0c;不在該程序文件中)&#xff0c;Applicatiion則運行時不可更改。可以使用數據網格視圖(VS軟件的Properties 下面的Setting…

常見的Redux問題

在React中使用Redux的面試題目通常涵蓋了Redux的基本概念、工作原理、如何在React應用中集成Redux等方面。以下是一些常見的Redux問題&#xff1a; Redux的核心概念&#xff1a; 1、什么是Redux&#xff1f;它解決了什么問題&#xff1f; 它是一個狀態管理庫&#xff0c;解決…

2023國賽數學建模思路 - 復盤:校園消費行為分析

文章目錄 0 賽題思路1 賽題背景2 分析目標3 數據說明4 數據預處理5 數據分析5.1 食堂就餐行為分析5.2 學生消費行為分析 建模資料 0 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 賽題背景 校園一卡通是集…

個保新標 | 《信息安全技術 敏感個人信息處理安全要求》(征求意見稿)發布

8 月 9 日&#xff0c;全國信息安全標準化技術委員會公開發布關于國家標準《信息安全技術 敏感個人信息處理安全要求》&#xff08;征求意見稿&#xff09;&#xff08;以下簡稱《標準》&#xff09;的通知&#xff0c;面向社會廣泛征求意見。 《標準》的制定背景是為支撐《個人…

《Go 語言第一課》課程學習筆記(一)

配好環境&#xff1a;選擇一種最適合你的 Go 安裝方法 選擇 Go 版本 一般情況下&#xff0c;建議采用最新版本。因為 Go 團隊發布的 Go 語言穩定版本的平均質量一直是很高的&#xff0c;少有影響使用的重大 bug。可以根據不同實際項目需要或開源社區的情況使用不同的版本。 有…

攻擊LNMP架構Web應用

環境配置(centos7) 1.php56 php56-fpm //配置epel yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm//安裝php56&#xff0c;php56-fpm及其依賴 yum --enablereporemi install php56-php yum --enablereporemi install php…

常見的字符編碼有哪些?有什么區別?

目錄 面試回答 知識擴展 Unicode 和 UTF-8 有啥關系&#xff1f; 有了 UTF-8&#xff0c;為什么要出現 GBK 為什么會出現亂碼 面試回答 就像電報只能發出“滴”和“答”聲一樣&#xff0c;計算機只認為 0 和1 兩種字符&#xff0c;但是&#xff0c;人類的文字是多種多樣的&…