📅  最后修改于: 2023-12-03 15:29:34.900000             🧑  作者: Mango
在 Shell 编程中,有时需要从一个文件名中获取它所在的路径,这可以使用 BASH 的内置变量实现。
在 Bash 中,可以使用 ${var%pattern}
和 ${var%%pattern}
来删除变量 $var
中字符串中匹配 pattern
的最小和最大前缀。
${var%pattern}
只会删除最小前缀,而 ${var%%pattern}
则会删除所有匹配的前缀。
因此,如果想要从一个文件名中获取它所在的路径,可以使用:
path=${file%/*}
这将会删除 $file
字符串中的最小的 /
及其后面的字符,从而得到其所在的路径。
下面是一个完整的 Bash 脚本示例:
#!/bin/bash
file="/path/to/myfile.txt"
path=${file%/*}
echo "File: $file"
echo "Path: $path"
这将会输出:
File: /path/to/myfile.txt
Path: /path/to
如果 $file
字符串中没有 /
,则 $path
的值将会是空字符串。
使用 ${var%pattern}
和 ${var%%pattern}
可以方便地从 Bash 字符串中获取路径。在实际使用中,需要注意一些细节,例如当文件名中不包含 /
时,路径将会是空字符串。