假設我們定義了乙個變數為:
file=/dir1/dir2/dir3/my.file.txt
可以用$分別替換得到不同的值:
$:刪掉第乙個
/及其左邊的字串:
dir1/dir2/dir3/my.file.txt
$:刪掉最後乙個
/ 及其左邊的字串:
my.file.txt
$:刪掉第乙個
. 及其左邊的字串:
file.txt
$:刪掉最後乙個
. 及其左邊的字串:
txt$
:刪掉最後乙個
/ 及其右邊的字串:
/dir1/dir2/dir3
$:刪掉第乙個
/ 及其右邊的字串:(空值
)$:刪掉最後乙個
. 及其右邊的字串:
/dir1/dir2/dir3/my.file
$:刪掉第乙個
. 及其右邊的字串:
/dir1/dir2/dir3/my
記憶的方法為:
# 是 去掉左邊(鍵盤上#在 $ 的左邊)
%是去掉右邊(鍵盤上% 在$ 的右邊)
單一符號是最小匹配;兩個符號是最大匹配
$:提取最左邊的
5個位元組:
/dir1
$:提取第
5個位元組右邊的連續
5個位元組:
/dir2
也可以對變數值裡的字串作替換:
$:將第乙個
dir替換為
path
:/path1/dir2/dir3/my.file.txt
$:將全部
dir替換為
path
:/path1/path2/path3/my.file.txt利用$
還可針對不同的變數狀態賦值
(沒設定、空值、非空值):
$ :假如
$file
沒有設定,則使用
my.file.txt
作傳回值。
(空值及非空值時不作處理
) $
:假如$file
沒有設定或為空值,則使用
my.file.txt
作傳回值。
(非空值時不作處理)$
:假如$file
設為空值或非空值,均使用
my.file.txt
作傳回值。
(沒設定時不作處理)$
:若$file
為非空值,則使用
my.file.txt
作傳回值。
(沒設定及空值時不作處理)$
:若$file
沒設定,則使用
my.file.txt
作傳回值,同時將
$file
賦值為my.file.txt。(
空值及非空值時不作處理)$
:若$file
沒設定或為空值,則使用
my.file.txt
作傳回值,同時將
$file
賦值為my.file.txt。(
非空值時不作處理)$
:若$file
沒設定,則將
my.file.txt
輸出至stderr。(
空值及非空值時不作處理)$
:若$file
沒設定或為空值,則將
my.file.txt
輸出至stderr。(
非空值時不作處理)$
可計算出變數值的長度:
$可得到
27 ,因為
/dir1/dir2/dir3/my.file.txt是27
個位元組
shell指令碼批量修改檔名稱
示例 filename home mnt test.txt 用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 home mnt test.txt 拿掉最後一條 及其左邊的字串 test.txt 拿掉第乙個 及其左邊的字串 test.txt 拿掉最後乙個 及其左邊的字串 txt 拿掉最後條 及其右...
Shell 批量替換檔名稱
去除特定字元 目標 將 2017 01 01.jpg 2018 01 01.jpg 改為 20170101.jpg 20180101.jpg 方法 將所有 替換為空 done中間插入字元 目標 將 book01.txt 02.txt 改為 book 01.txt 02.txt 方法 用分組匹配分別獲...
php遍歷資料夾檔名稱,並更改檔名稱
function list file date echo a 把資料夾紅名輸出 list file a 因為是資料夾所以再次呼叫自己這個函式,把這個資料夾下的檔案遍歷出來 else var dump info echo file name list file f myoa function list...