Linux 有人能给我解释一下下面的内容吗
我对在shell脚本中找到的以下正则表达式感到困惑Linux 有人能给我解释一下下面的内容吗,linux,bash,shell,Linux,Bash,Shell,我对在shell脚本中找到的以下正则表达式感到困惑 #/垃圾箱/垃圾箱 prog=${0%%.sh}-via.sh 任何人给我一个有价值的信息${0%%.sh}都会从变量0(它包含脚本的名称)中删除后缀.sh,并通过.sh添加-via.sh。结果存储在prog中,即-via.sh 有关更多参考信息,请参阅此相关问题:该脚本中没有正则表达式 ${0}是被调用脚本的名称。 %%运算符删除匹配的后缀模式,因此${0%%.sh}是被调用脚本的名称,不带最后一个“.sh”。 最后,${0%%.sh}-v
#/垃圾箱/垃圾箱
prog=${0%%.sh}-via.sh
任何人给我一个有价值的信息
${0%%.sh}
都会从变量0
(它包含脚本的名称)中删除后缀.sh
,并通过.sh添加-via.sh
。结果存储在prog
中,即-via.sh
有关更多参考信息,请参阅此相关问题:该脚本中没有正则表达式
${0}
是被调用脚本的名称。
%%
运算符删除匹配的后缀模式,因此${0%%.sh}
是被调用脚本的名称,不带最后一个“.sh”。
最后,${0%%.sh}-via.sh
是被调用脚本的名称,没有最后的“.sh”和附加“-via.sh”
该值被分配给变量
prog
当您运行脚本时,变量$0
将自动设置为脚本的名称(该名称可能包含文件夹,也可能不包含文件夹,但我认为这与您的问题无关)
在bash中,可以使用${0}
语法来获取相同的变量,但在大括号中可以向变量添加额外的处理。在您的示例中:
${0%%.sh}
将使用删除字符串末尾的“.sh”部分
将在末尾添加-via.sh
,并将其分配给prog
总之,它所做的是将.sh
替换为-via.sh
。假设您的脚本名为“myscript.sh”,那么prog
将被分配值“myscript via.sh”
作为补充说明,我建议您在脚本开始时使用#/bin/bash
而不是#/bin/sh
,因为参数替换是bash特性。更多关于它为什么重要的信息
prog=${0%%.sh}-via.sh