如何回显带有星号的变量并添加文本?



所以我正在创建一个变量,我想在末尾添加一个附加法来回显它,如下所示:

我有一个文件:Filename-08-10-2017.txt

我创建一个变量:

myvariable=Filename*.txt

当我回显该变量时:

echo $myvariable

它输出Filename-08-10-2017.txt

但我想将名称更改为.zip

所以我试图去:

echo $myvariable.zip并让它输出Filename-08-10-2017.txt.zip

但是它输出:

Filename*.txt.zip

如何让它以我想要的方式输出?

谢谢。

编辑:

我有点想通了。

我将一个新变量保存为 $($myvariable( 来保存输出。

文件名来自 glob 扩展。如果要使用 glob 扩展迭代所有文件,可以:

myvariable=Filename*.txt
for f in $myvariable; do echo $f; done

如果你想"禁用"全局扩展,例如通过echo $myvariable获得文字Filename*.txt,你可以set -f或只用双引号包装变量:echo "$myvariable"

要处理文本,您可以执行以下操作:

for f in $myvariable; do echo $f"whatever_like_zip"; done

如果要进行一些文本替换,可以

for ... echo ${f/%txt/zip} ; done

它会将所有txt文件名更改为zip

另外,如果要重命名文件,请将上述echo...更改为

mv "$f" "yourNewNameHere"

无论如何,通过阅读您的问题,我不太清楚,您真正想要的是什么。

Yuo可以使用sed

试试这个

file="test.txt"
newext=$(echo "$file" | sed -e "s|txt|zip|g")
echo $newext

最新更新