1
您好我有一个小脚本(脚本名称是:test1.sh),看起来像这样了解Linux的shell脚本表达
PRG=$0
data=`expr $PRG : '.*\/.*'`
echo $data
当我运行此我看到输出
我无法理解写在脚本第二行的正则表达式。 这是什么意思?
您好我有一个小脚本(脚本名称是:test1.sh),看起来像这样了解Linux的shell脚本表达
PRG=$0
data=`expr $PRG : '.*\/.*'`
echo $data
当我运行此我看到输出
我无法理解写在脚本第二行的正则表达式。 这是什么意思?
表达如果存在脚本($0 in sh
)的文件名相对内的/
返回一个非零值。如果执行如下脚本:sh ../../script.sh
,则输出15,即“../../script.sh”的总长度。它匹配“../../”与'.*\/
,匹配script.sh
与.*
部分。
If the match succeeds the `:' expression returns the number of characters matched.
所以10很可能
./test1.sh ^^^^^^^^^^ ||||||||| \ 123456789 10
由于提问的是关于正则表达式的含义的问题,它将匹配任意字符的0个或更多个字符,后跟斜杠,后跟0个或多个任意字符。 expr命令特别匹配输入字符串的开头。所以这解释了为什么它会匹配整个字符串,如果$ 0 ==“./test1.sh”。还要注意,bash脚本中的$ 0指的是脚本名称,正如此答案所暗示的。 – 2013-05-13 21:13:25
@Ryan和Steven谢谢澄清。 – Ayusman 2013-05-13 21:57:15