Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 有人能给我解释一下下面的内容吗_Linux_Bash_Shell - Fatal编程技术网

Linux 有人能给我解释一下下面的内容吗

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

我对在shell脚本中找到的以下正则表达式感到困惑

#/垃圾箱/垃圾箱
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