【问题标题】:How do I echo a variable with a star in it with added text?如何使用添加的文本回显带有星号的变量?
【发布时间】:2018-01-24 20:05:57
【问题描述】:

所以我正在创建一个变量,并且我想在末尾添加一个这样的内容来回应它:

我有一个文件: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),它保存了输出。

【问题讨论】:

  • 您希望它返回单个文件吗?如果是这样,为什么不使用完整的文件名,如果不使用循环。
  • 我有一个文件,但我正在使用脚本来生成和删除文件,然后我试图用密码压缩它们。

标签: linux bash variables output echo


【解决方案1】:

文件名来自全局扩展。如果您想使用 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"

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

【讨论】:

    【解决方案2】:

    你可以使用 sed

    试试这个

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

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 2021-11-01
      • 2022-11-16
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      相关资源
      最近更新 更多