[英]What does ${xyz##* } mean in a shell file?
我正在尝试了解Shell脚本。 ${device_info##* }
做什么的?
device_info=$(ls -l /dev/disk/by-id/my-disk)
relative_path=${device_info##* }
${x##p}
是在POSIX或Bourne壳一个参数扩展其去除最长(因为##
,也有最短的匹配与#
从外壳变量x P的操作者)的匹配。 在您的情况下实际上匹配的(文件名不匹配,不是正则表达式)模式是' *
'(表示任何以空格结尾的数字字符)。
您可以自己测试:
A="a b cc"
echo longest: ${A##* }
echo shortest: ${A#* }
这将打印longest cc
和shortest b cc
。
在您的情况下,它将从ls
输出中删除除最后一列以外的所有列。
这些模式记录在shell手册页中( man bash
参数扩展”部分)。 Open Group POSIX shell命令语言的 2.6.2节中也对此进行了说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.