1讼昆、在 bash shell 中蒙袍,$()是將括號(hào)內(nèi)命令的執(zhí)行結(jié)果賦值給變量:
(base) zeng@zeng-X11DAi-N:~/workspace$ ls
a.sh data.sh results.txt
#將命令 ls 賦值給變量 a
(base) zeng@zeng-X11DAi-N:~/workspace$ a=$(ls)
(base) zeng@zeng-X11DAi-N:~/workspace$ echo $a
a.sh data.sh results.txt
2腕巡、${} 是用來作變量替換玄坦。一般情況下,$var 與 ${var} 并沒有啥不一樣绘沉。但是用 ${ } 會(huì)比較精確的界定變量名稱的范圍:
(base) zeng@zeng-X11DAi-N:~/workspace$ A=B
#目的想打印變量A煎楣,然后再加上一個(gè)B,結(jié)果返回?zé)o车伞。
(base) zeng@zeng-X11DAi-N:~/workspace$ echo $AB
#此時(shí)择懂,${ }可以較為精確的確定變量的范圍
(base) zeng@zeng-X11DAi-N:~/workspace$ echo ${A}B
BB
(base) zeng@zeng-X11DAi-N:~/workspace$
3、${ } 的一些特殊功能:
假設(shè)我們定義了一個(gè)變量為:file=/dir1/dir2/dir3/my.file.txt
${file#*/}:拿掉第一條 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一條 / 及其左邊的字符串:my.file.txt
${file#*.}:拿掉第一個(gè) . 及其左邊的字符串:file.txt
${file##*.}:拿掉最后一個(gè) . 及其左邊的字符串:txt
${file%/*}:拿掉最后條 / 及其右邊的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一條 / 及其右邊的字符串:(空值)
${file%.*}:拿掉最后一個(gè) . 及其右邊的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一個(gè) . 及其右邊的字符串:/dir1/dir2/dir3/my
記憶的方法為:
# 是去掉左邊(在鑒盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑒盤上 % 在 $ 之右邊)
單一符號(hào)是最小匹配﹔兩個(gè)符號(hào)是最大匹配另玖。
${file#/}(不加*號(hào))表示只去掉最左邊的/