1 of 11

BASH

2023.06

1

2 of 11

Outline

2

Quoting

Escape Character

Single Quotes

Double Quotes

介紹幾個特殊意義的字元

Parameters

Positional Parameters

Special Parameters

Shell Variables

3 of 11

Quoting

3

4 of 11

Quoting�

  • Bash 有三種 quoting mechanisms

1. 跳脫字元 Escape Character  ( \ )

因為有些字元有特殊意義,如果要保留字元字面上的意義,可� 以在字元前加上跳脫字元。�

如果在跳脫字元後接的是換行字元 \<newline>,則有連接行的� 意思

4

5 of 11

Quoting�

  • Bash 有三種 quoting mechanisms

2. 單引號 Single Quotes ( ' )

被兩個單引號包起來的特殊字元不會� 被解釋為特殊意義,所以不需要加上� 跳脫字元�

單引號無法被放在兩個單引號中間,� 就算用跳脫字元也一樣不行,因為跳� 脫字元在兩個單引號中不會被解釋為� 跳脫字元的意義

5

6 of 11

Quoting�

  • Bash 有三種 quoting mechanisms

3. 雙引號 Double Quotes ( " )

在兩個雙引號中的特殊字元會有特殊意義,所以如果想要保留特殊字元字 面的意義,可以在前面加上跳脫字元,因為此時跳脫字元會被解釋為跳脫 字元的意義�

6

7 of 11

Quoting�

  • 幾個特殊字元

\b BACKSPACE

\f FORM FEED

\n NEWLINE

\t TAB

\v VERTICAL TAB

\\ \” \` 把後面的特殊字符印出來

\0nnn(one or three oct digits)印出字元(ASCII轉8進位)

\xHH(one or two hex digits) 印出字元(ASCII轉16進位)�

7

shopt -s xpg_echo

8 of 11

Parameters

8

9 of 11

Parameters�

  • Shell Variables

使用set指令

9

Bash版本

Shell options

用來啟用和關閉 Shell 的一些功能選項的

想要知道更多參數可以到https://linux.die.net/man/1/bash

10 of 11

Parameters�

  • Positional Parameters

sh test.sh what a good day!

10

$0

$1

$2

$3

$4

11 of 11

Parameters�

  • Special Parameters

* :包含所有輸入的參數,$@ 即代表 $1, $2,....直到所有參數結� 束。$* 將所有參數無間隔的連在一起,存成一個單一的參� 數。也就是說 $* 代表了 "$1 $2 $3..."。

@ :包含所有輸入的參數,$@ 用將所有參數以空白為間隔,存在 $@ 中。也就是說 $@ 代表了 "$1" "$2" "$3"....。

# :執行時,給這個 Shell Script 參數的個數

? :表示上一個指令的離開狀況,一般指令正常離開會傳回 0。不 正常離開則會傳回 1、2 等數值。

$ :這一個 shell 的 process ID number

11