当前位置: 技术问答>linux和unix
SHELL命令
来源: 互联网 发布时间:2016-02-05
本文导语: 各位达人, shldir=${0%/*} 的${0%/*}的表示什么意思? 请赐教。 | 蛮有趣的,查了一下,含义类似于将$0(如果在某个脚本中直接调用上面的语句的话也即argv[0])中和/*(表示以/开始,后面可有任...
各位达人,
shldir=${0%/*}
的${0%/*}的表示什么意思?
请赐教。
shldir=${0%/*}
的${0%/*}的表示什么意思?
请赐教。
|
蛮有趣的,查了一下,含义类似于将$0(如果在某个脚本中直接调用上面的语句的话也即argv[0])中和/*(表示以/开始,后面可有任意个字符)匹配的最短部分删除,然后将处理后的值赋值给shldir,实际的含义则类似于获得调用脚本的路径。
例子:如在/root/下有一个脚本名称是test,里面有shldir=${0%/*},会有以下的情况:
进入/root/目录下,./test则shldir的值为. 因为/test匹配/*,因此被去除
直接调用/root/test,则shldir的值为 /root 因为/test是最短匹配/*的,因此被去除
对应的帮助可以info bash,然后跳到Shell Parameter Expansion的node,里面有说明。如果把%换成%%则是删除最长匹配部分,自己可以看看有什么差异。
例子:如在/root/下有一个脚本名称是test,里面有shldir=${0%/*},会有以下的情况:
进入/root/目录下,./test则shldir的值为. 因为/test匹配/*,因此被去除
直接调用/root/test,则shldir的值为 /root 因为/test是最短匹配/*的,因此被去除
对应的帮助可以info bash,然后跳到Shell Parameter Expansion的node,里面有说明。如果把%换成%%则是删除最长匹配部分,自己可以看看有什么差异。