什么./${SCRIPT##*/}在bash脚本中意味着什么

时间:2014-05-29 21:51:52

标签: linux bash

我正在看别人写的剧本。有几个变量集包括另一个脚本,它通过变量插值执行为./${SCRIPT##*/}。我知道通常只需使用${SCRIPT}即可完成此操作。 ##*/之后的SCRIPT是什么?

2 个答案:

答案 0 :(得分:2)

那是parameter substitution

  

$ {var ## Pattern}从$ var中删除$ Pattern中最长的部分   匹配$ var。

的前端

在这个特定示例中,它贪婪地删除了模式*/,这将删除SCRIPT中存储的字符串的所有部分,包括最后一个/

请考虑以下示例。

SCRIPT=/tmp/hiefe.txt
echo ./${SCRIPT##*/}

输出:

./hiefe.txt

答案 1 :(得分:1)

来自documentation

  

$ {var ## Pattern}从$ var中删除$ pattern中与$ var前端匹配的最长部分。

所以是的,它基本上返回了最终/后与./联系的路径的剩余部分。例如:

>> SCRIPT=/test/set/of/path.text;echo ./${SCRIPT##*/}
./path.text