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

Bash 在.sh文件中,“output_dir=“${1%/}”是什么意思?,bash,Bash,我没有见过这样的用法。任何人都可以提供相关信息吗?源代码参见 ${参数%word} ${parameter%%word} 将该词展开以生成一个模式,并根据下面描述的规则进行匹配。请参阅模式匹配。如果该模式匹配参数展开值的尾随部分,则展开的结果为参数值,其中最短的匹配模式为“%”大小写,最长的匹配模式为“%”'案例已删除。[…] 我强调了相关的替代方案。讨论中的参数是$1,即调用脚本时使用的第一个命令行参数。该模式是简单的/如果存在,将被删除。换句话说,扩展将删除可选的尾部斜杠 演示y案例显示它只

我没有见过这样的用法。任何人都可以提供相关信息吗?源代码参见

${参数%word} ${parameter%%word}

将该词展开以生成一个模式,并根据下面描述的规则进行匹配。请参阅模式匹配。如果该模式匹配参数展开值的尾随部分,则展开的结果为参数值,其中最短的匹配模式为“%”大小写,最长的匹配模式为“%”'案例已删除。[…]

我强调了相关的替代方案。讨论中的参数是$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

${参数%word} ${parameter%%word}

将该词展开以生成一个模式,并根据下面描述的规则进行匹配。请参阅模式匹配。如果该模式匹配参数展开值的尾随部分,则展开的结果为参数值,其中最短的匹配模式为“%”大小写,最长的匹配模式为“%”'案例已删除。[…]

我强调了相关的替代方案。讨论中的参数是$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

它基本上会从作为原因中脚本的参数接收的第一个字符串的结尾处删除最后一个/字符。 如果将/home/users/作为字符串,那么output_dir将变成/home/users
您可以在bash中找到有关字符串操作的更多详细信息。

它基本上删除了作为脚本参数接收的第一个字符串结尾的最后一个/字符。 如果将/home/users/作为字符串,那么output_dir将变成/home/users 您可以在bash中找到有关字符串操作的更多详细信息