Shell系列(一)創(chuàng)建shell程序與shell變量

知乎高票回答:Bash處理一次性的瑣碎事物,Python處理自動化,代碼量較大的的維護(hù)任務(wù)。而需要效率的任務(wù)交給C/C++。
作為Linux開發(fā)人員,掌握Bash腳本是很重要的,但是最近吸收的東西太多了沒辦法都記住,所以一定要寫寫博客記錄一下。
一個比較好的免費課程(shell腳本編程入門到精通)https://edu.aliyun.com/course/155?spm=5176.10731542.0.0.ATHyuM


一、創(chuàng)建步驟

開頭
#!/bin/bash#!用作shell命令的完全路徑,顯示后期命令以哪種shell來執(zhí)行這些命令。如不指定shell,以當(dāng)前shell作為執(zhí)行的shell。/bin/sh ->bash。
shell程序一般以.sh結(jié)尾。
創(chuàng)建shell程序的步驟

  • 創(chuàng)建一個包含命令和控制結(jié)構(gòu)的shell文件。
  • 修改這個文件的權(quán)限使它可以執(zhí)行。
  • 執(zhí)行。1)./example.sh 2)絕對路徑/root/test/example.sh 3)使用bash,不需要執(zhí)行權(quán)限。bash example.sh。

二、shell變量

shell傳遞數(shù)據(jù)的一種方法。變量是用來代表每個值的符號名。分為臨時/永久變量。
臨時變量:是shell程序內(nèi)部定義的,使用范圍僅限于定義它的程序,對其它程序不可見。
永久變量:注意,是環(huán)境變量,其值不隨著shell腳本的執(zhí)行結(jié)束而消失。
調(diào)用方法:echo $PATH(使用變量值時需要在前面加$)
環(huán)境變量非常重要,運行某個命令的時候,本地查找不到某個命令或文件,會到這個聲明的目錄中查找。
變量賦值

image.png

關(guān)于$()和${}:

$()實際上括號里是系統(tǒng)命令的轉(zhuǎn)化調(diào)用,如果你只是創(chuàng)建一個臨時變量,那么會顯示bash:command not found,而如果想轉(zhuǎn)換這種變量需要使用花括號即${}。

image.png

前面加上$的變量表示調(diào)用該變量的值。
顯示所有變量:set,多個單詞用(“”/'')引號括起來即可。
單引號和雙引號的區(qū)別:單引號之間的內(nèi)容原封不動地指定給了變量。雙引號取消了空格的作用,特殊符號的含義保留。

image.png

刪除變量:unset name
位置變量和特殊變量:Shell解釋執(zhí)行用戶的命令時,將命令行的第一個字作為命令名,而其它字作為參數(shù)。由出現(xiàn)在命令行上的位置確定的參數(shù)成為位置參數(shù)。
如:ls -l —> ls為命令名,-l為位置參數(shù)。
位置變量用$N來表示。如$0表示當(dāng)前程序文件名,$N(1,……,n)表示命令行輸入的參數(shù)。

特殊變量:有些變量是一開始執(zhí)行Script腳本時就會設(shè)定,且不能被修改,但我們不叫它只讀的的系統(tǒng)變量,而叫它特殊變量。這些變量當(dāng)一執(zhí)行程序時就有了,以下是一些特殊變量:

  • $*:這個程序的所有參數(shù)
  • $#:這個程序的參數(shù)個數(shù)
  • $$:這個程序的PID
  • $!:執(zhí)行上一個后臺程序的PID
  • $?:執(zhí)行上一個指令的返回值

綜合實例:

一、參數(shù)
#!/bin/bash
echo "$* all parameters"http://程序的所有參數(shù)
echo "$# parameters amount"http://程序的參數(shù)個數(shù)

touch /tmp/a.txt
echo "$$ PID"http://程序進(jìn)程ID

touch /tmp/b.txt &
echo "$! Last PID"http://執(zhí)行上一個后臺指令的PID
echo "$$ PID"http://程序進(jìn)程ID

運行后結(jié)果

image.png

解釋
注意$$是shell進(jìn)程本身的PID,如果在shell script里,它就是shell script這個進(jìn)程的PID。而touch后面我加了一個&,這意味著它以后臺運行。因此如果我在touch a的時候加入$!,那么這個Last PID是沒有值的。它是后臺最后一個運行的進(jìn)程的PID

二、變量
#!/bin/bash
var1="abcd efg"
echo $var1
var2=1234
echo"The value of var2 is $var2"
echo $HOME
echo $PATH
echo $PWD

運行后結(jié)果

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容