gpt4 book ai didi

linux - bash脚本zip文件名解析奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:39 26 4
gpt4 key购买 nike

我正在尝试将各种文件压缩在一起(其中包含的文件之一实际上是 zip 本身),并根据之前定义的一些 bash 变量命名生成的 zip。 zip 文件名中使用的变量之一是从 config.h 文件中的 #define 解析的。我成功地解析了具有正确名称的 .zip,但是当我尝试在稍微不同的情况下实现相同的 zip 脚本时,我得到了错误的 zip 名称。

在 Windows 资源管理器中,错误的 zip 名称类似于 X1276N~E.ZIP在linux中,zip以预期的名称出现,除了问号(我逐渐理解为某种占位符)。例如foo-stuff-bar-9.1b?.zip

我当前的代码尝试压缩名为 foo-stuff-bar-9.1b.zip 的文件:

foo_name=$1
bar_name=$2
rev_number=$(grep define[[:space:]]*SOME_NUMBER $directory/config.h | awk '{print $3;}'| tr -d '/"')
archive_name="$foo_name"-stuff-"$bar_name"-9."$rev_number"
zip "$archive_name".zip file1 file2 backup1.zip file3

因此,“foo_name”和“bar_name”是脚本运行时来自终端的字符串,“rev_number”是从 config.h 中解析的,在 zip 命令中使用它之前,我将其全部格式化为“archive_name”。

我尝试了各种引号和括号的变体,但无论我尝试什么,我都会得到相同的奇怪名称。我不确定我的错误是在哪里引起的,因为我正在从许多来源进行解析。非常感谢任何建议。

最佳答案

根据 Marc B 的建议,我将字符串通过管道传输到 xxd -b逐字节查看每个字符。看起来好像我在抓取 config.h 文件时不小心解析了 $archive_name 末尾的字符。

我只需通过管道 tr -d "[:cntrl:]" 就可以解决这个问题删除任何会产生奇怪文件名的控制字符。

关于linux - bash脚本zip文件名解析奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com