[英]What does ${1%..} mean in this shell script?
我有這樣的腳本,
latex $1
asy ${1%.tex}.asy
我知道如果$1=test.tex
,那么${1%.tex}.asy
將是test-1.asy
,但是1%.
是什么1%.
是這里嗎 如果我希望將${1%.tex}.asy
test.asy
,我應該怎么辦?
從Bash參考手冊 :
$ {parameter%word}
$ {parameter %% word}
單詞被擴展以產生一個模式,就像文件名擴展一樣。 如果該模式與參數的擴展值的結尾部分匹配,則擴展結果是刪除了最短匹配模式(
%
大小寫)或最長匹配模式(%%
大小寫)的參數值。 如果parameter為@
或*
,則將模式去除操作依次應用於每個位置參數,並且擴展為結果列表。 如果parameter是一個用@
或*
下標的數組變量,則將模式刪除操作依次應用於數組的每個成員,並且擴展為結果列表。
因此,如果$1
擴展為text.tex
則${1%.tex}
擴展為text
。
您可以為腳本提供參數,例如:
myscript one two three
這些參數被分配給位置參數$1
, $2
和$3
。 在上面的示例中,將$1
分配給one
,將$2
分配給two
, ${1%.tex}.asy
。代碼${1%.tex}.asy
僅對變量$1
:它返回帶有后綴.tex
的字符串,並將其替換掉與.asy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.