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的原因与我的软件配置有关。