.sh文件中的“ output_dir =” $ {1%/}“是什么意思?

时间:2019-04-17 13:33:24

标签: bash

我还没有看到这样的用法。任何人都可以提供相关信息吗?源代码im2txt

2 个答案:

答案 0 :(得分:2)

请参见bash manual:

  

$ {parameter%word}   $ {parameter %% word}

     

单词将被扩展以产生一个模式,并根据下面描述的规则进行匹配(请参见模式匹配)。如果模式与 parameter的扩展值的尾随部分相匹配,则扩展结果为 parameter 的值与 >删除了最短的匹配模式(“ %%”大小写)或最长的匹配模式(“ %%”大小写)。 [...]

我强调了相关的选择。有问题的 parameter 是$ 1,即调用脚本的第一个命令行参数。该模式是一个简单的/,如果存在,它将被删除。换句话说,该扩展会删除可选的尾部斜杠。

演示(y的情况表明它只是尾随模式,z的情况下没有匹配项):

$ x=aaa/; y=aaa/bbb; z=aaa; echo "$x    ->      ${x%/}"; echo "$y       ->      ${y%/}"; echo "$z       ->      ${z%/}"
aaa/    ->      aaa
aaa/bbb ->      aaa/bbb
aaa     ->      aaa

答案 1 :(得分:0)

从根本上说,它是从第一个字符串的结尾处删除最后一个“ /”字符,这是原因脚本的参数。 如果您将“ / home / users /”作为字符串,则output_dir将变为“ / home / users” 您可以在bash here中找到有关字符串操作的更多详细信息。