iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0
自我挑戰組

30 天不間斷-資工隨筆大雜燴系列 第 20

[Day 20] 自己的 Shell Script 自己寫 - 變數與字元

  • 分享至 

  • xImage
  •  

前言

昨天有以一個簡單的腳本展示了變數、輸出等最基本的功能,今天來介紹這些元素的細節,以免之後寫腳本踩雷。

字元

特殊字元

符號 名稱 意義
$ 變數 取變數名稱對應的值
# 註解
\ 跳脫符號 特殊及萬用字元還原成一般字元
| 管線
; 分隔連續指令符號
$ 工作控制 將指令變成背景執行
/ 目錄符號 分隔路徑
>,>> 資料重導向(輸出)
<,<< 資料重導向(輸入)
'' 單引號 無法取變數值
"" 雙引號 可以取變數值
`` 或是 $() 裏面包執行的指令
() 子 shell的始末
{} 中間爲命令區塊

萬用字元

符號 功能
* 0到無窮多個任意字元
? 一個以上的任意字元
[] 一個以上括號內的字元
- 編碼範圍內的所有字元,例如[0-9]代表0到9之間的所有數字
^ 後面接的字元都不要,例如[^0-9]代表0-9之間的所有字元都不接受

變數

設定變數值

在設定變數值的時候,記得變數、賦值運算子(=)、變數值中間沒有空白,否則會有錯誤。

var1="環境變數的值是 $PATH"
echo $var1
var1="$var1"我這個字串附加可以向這樣直接附加在$var1的後面~

輸出結果:

環境變數的值是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
環境變數的值是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

輸出指令的執行結果

var2=$(ls /home)
echo "ls 的執行結果 $var2"

執行結果:

aming lost+found

輸出純文字

var3='環境變數的值是 $PATH'
echo $var2
var4="環境變數的值是 \$PATH"

輸出結果:

環境變數的值是 $PATH

環境變數

一個系統環境可能會有常用的路徑或是預設的字元編碼,因此環境變數儲存這些系統資訊,方便查閱或是切換路徑。

繼承特性

  • 子程序會繼承父程序的環境變數
  • 子程序不會繼承父程序的一般變數

指令

  • env: 查看所有環境變數
  • set: 查看所有環境變數與一般變數
  • export:設定一般變數成爲環境變數

應用

如果你希望你的子程序能夠使用父程序的一般變數的話,可以透過 export 轉換一般變數成爲環境變數,就會產生繼承的效果。


上一篇
[Day 19] 自己的 Shell Script 自己寫 - 初試 Bash 腳本
下一篇
[Day 21] 自己的 Shell Script 自己寫 - 參數應用
系列文
30 天不間斷-資工隨筆大雜燴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言