Bash ${1%..}在这个shell脚本中是什么意思?
我有这样的剧本Bash ${1%..}在这个shell脚本中是什么意思?,bash,shell,unix,Bash,Shell,Unix,我有这样的剧本 latex $1 asy ${1%.tex}.asy 我知道如果$1=test.tex,那么${1%.tex}.asy将是test-1.asy,但是1%在这里是什么意思?如果我希望${1%.tex}.asy成为test.asy,我该怎么办?您可以为脚本提供参数,例如: myscript one two three 这些参数被分配给位置参数$1、$2和$3。在上面的示例中,$1将分配给one,$2分配给two,以此类推。代码${1%.tex}.asy只是对变量$1进行操作:它返
latex $1
asy ${1%.tex}.asy
我知道如果
$1=test.tex
,那么${1%.tex}.asy
将是test-1.asy
,但是1%在这里是什么意思?如果我希望${1%.tex}.asy
成为test.asy
,我该怎么办?您可以为脚本提供参数,例如:
myscript one two three
这些参数被分配给位置参数$1
、$2
和$3
。在上面的示例中,$1
将分配给one
,$2
分配给two
,以此类推。代码${1%.tex}.asy
只是对变量$1
进行操作:它返回一个后缀为.tex
的字符串,并将其替换为。asy
您可以为脚本提供参数,例如:
myscript one two three
这些参数被分配给位置参数$1
、$2
和$3
。在上面的示例中,$1
将被分配给one
,而$2
将被分配给two
,等等。代码${1%.tex}.asy
仅对变量$1
进行操作:它返回一个带有后缀.tex
的字符串,并将其从以下位置移除并替换为.asy
:
${参数%word}
${parameter%%word}
这个词被展开以产生一个模式,就像在文件名展开中一样。如果模式匹配参数扩展值的尾随部分,则扩展的结果是删除了最短匹配模式(%%
案例)或最长匹配模式(%%
案例)的参数值。如果参数为@
或*
,则模式删除操作将依次应用于每个位置参数,展开为结果列表。如果参数是一个数组变量,下标为@
或*
,则模式删除操作将依次应用于数组的每个成员,展开为结果列表
因此,如果$1
展开为text.tex
,则${1%.tex}
展开为text
,从:
${参数%word}
${parameter%%word}
这个词被展开以产生一个模式,就像在文件名展开中一样。如果模式匹配参数扩展值的尾随部分,则扩展的结果是删除了最短匹配模式(%%
案例)或最长匹配模式(%%
案例)的参数值。如果参数为@
或*
,则模式删除操作将依次应用于每个位置参数,展开为结果列表。如果参数是一个数组变量,下标为@
或*
,则模式删除操作将依次应用于数组的每个成员,展开为结果列表
因此,如果$1
扩展为text.tex
,则${1%.tex}
扩展为text$1
是运行时传递给shell脚本的第一个位置变量%.tex
从后面删除最短的匹配.tex
。我不确定您是如何从上面显示的内容中获得test-1.asy
输出的。它应该会产生你想要的输出。谢谢!我想我得到test-1.asy的原因与我的软件配置有关。$1
是运行时传递给shell脚本的第一个位置变量%.tex
从后面删除最短的匹配.tex
。我不确定您是如何从上面显示的内容中获得test-1.asy
输出的。它应该会产生你想要的输出。谢谢!我想我得到test-1.asy的原因与我的软件配置有关。