$ {1%..}在这个shell脚本中意味着什么?

时间:2014-05-21 19:48:25

标签: bash shell unix

我得到了这样的剧本,

latex $1
asy ${1%.tex}.asy

我知道如果$1=test.tex,那么${1%.tex}.asy将是test-1.asy,但1%.在这里意味着什么?如果我希望${1%.tex}.asy成为test.asy,我该怎么办?

2 个答案:

答案 0 :(得分:4)

来自Bash Reference Manual

  

$ {参数%字}

     

$ {参数%%字}

     

这个词被扩展为产生一个模式,就像文件名扩展一样。如果模式匹配参数展开值的尾部,那么展开的结果是具有最短匹配模式(%情况)或最长匹配模式({{1})的参数值} case)删除。如果参数为%%@,则模式删除操作依次应用于每个位置参数,并且扩展是结果列表。如果参数是使用*@下标的数组变量,则模式删除操作依次应用于数组的每个成员,并且扩展是结果列表。

因此,如果*扩展为$1,则text.tex会扩展为${1%.tex}

答案 1 :(得分:2)

您可以为脚本提供参数,例如:

myscript one two three

这些参数分配给位置参数$1$2$3。在上面的示例中,$1将分配给one$2分配给two,等等。代码${1%.tex}.asy只是对变量{{1}进行操作}:它返回一个后缀为$1的字符串,并将其替换为.tex