yae*_*ael 10 bash shell-script
我们要替换脚本文件扩展名
所以我们做了以下事情:
new_name=` echo run_fix.bash | sed 's/[.].*$//' `
new_file_extension=".in_hold.txt"
new_name=$new_name$new_file_extension
echo $new_name
run_fix.in_hold.txt
Run Code Online (Sandbox Code Playgroud)
但我觉得我的方法不是那么优雅
注意 - 因为脚本扩展名可以是 bash、perl 或 python,而且目标扩展名可以是“.”之后的任何内容。我们想要全球更换
我使用的是红帽 7.2
Kus*_*nda 20
old_name=run_fix.bash
new_name=${old_name%.bash}.in_hold.txt
printf 'New name: %s\n' "$new_name"
Run Code Online (Sandbox Code Playgroud)
这.bash
将从 的值中删除文件名后缀$old_name
并将其添加.in_hold.txt
到结果中。整个事情将被分配给变量new_name
。
膨胀${variable%pattern}
以除去最短后缀字符串匹配的图案pattern
从所述值$variable
是一个标准的参数扩展。
替换任何文件名后缀(即文件名中最后一个点之后的任何内容):
new_name=${old_name%.*}.new_suffix
Run Code Online (Sandbox Code Playgroud)
该.*
模式将匹配最后一个点及其后的任何内容(这将被删除)。如果您使用了%%
代替%
,则与模式匹配的最长子字符串将被删除(在这种情况下,您将删除字符串中第一个点之后的所有内容)。如果字符串不包含任何点,则它保持不变。