使用'basename -s'从bash中的路径中提取文件名

问题描述 投票:0回答:1

任何人都可以解释以下代码:

for var in $1\*.html
    echo $( basename -s .html $var )
done

-s做什么?它是否从每个文件名中删除.html?

linux bash shell unix
1个回答
1
投票

-s suffix选项意味着basename从文件名中删除后缀(如果存在)。

例如:

file=path/to/file.html
basename "$file"          => yields file.html
basename -s .html "$file" => yields file
basename -s  html "$file" => yields file.
basename -s .txt  "$file" => yields file.html since the string has no .txt extension

不知道为什么你的for循环中有$1\*.html - 这会抑制glob扩展,只会产生一个文字*.html的文件。

© www.soinside.com 2019 - 2024. All rights reserved.