繁体   English   中英

$ {xyz ## *}在shell文件中是什么意思?

[英]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 ccshortest b cc

在您的情况下,它将从ls输出中删除除最后一列以外的所有列。

这些模式记录在shell手册页中( man bash 参数扩展”部分)。 Open Group POSIX shell命令语言的 2.6.2节中也对此进行了说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM