gpt4 book ai didi

bash - 如何从 bash 替换 war 文件的 list ?

转载 作者:行者123 更新时间:2023-12-04 02:19:41 25 4
gpt4 key购买 nike

我当前的工作目录中有一个 war 文件 foo.war。我也有一个 MANIFEST.MF 文件。

ls .
foo.war MANIFEST.MF

在 foo.war 中,有一个文件 foo/META-INF/MANIFEST.MF。我想用我的工作目录中的文件替换 war 中的那个文件。我认为 zip 可以用来做这个,但我不明白 zip 文档。

正确的用法是什么?

如何验证它是否正确完成?

我如何使用 jar 来做到这一点?

最佳答案

经过一段时间的试验,我找到了这个解决方案:

#! /bin/bash

set -e

apt-get install -y zip
apt-get install -y unzip

rm -f foo.war
cp foo.original.war foo.war
touch META-INF/MANIFEST.MF

zip -f foo.war META-INF/MANIFEST.MF

rm -f test

unzip -p foo.war META-INF/MANIFEST.MF >test

#Uncomment next line to test verification:
#echo "X" >>test

if diff test META-INF/MANIFEST.MF; then
echo "OK."
else
ERR=$?
echo "Failed (diff exit code $ERR)."
exit 1
fi
  • zip 似乎仅在时间戳足够新时才替换文件。我仍然不清楚“足够新”的确切含义。
  • 我使用 unzip -p foo.war META-INF/MANIFEST.MF >test 从 zip 中提取了 MANIFEST.MF 文件
  • 我使用 diff 的退出代码来验证 MANIFEST.MF 确实已被替换。
  • zip 发出警告:“zip warning: Local Entry CRC does not match CD: META-INF/MANIFEST.MF”我不清楚这个警告的含义。
  • 我真的必须将 MANIFEST.MF 放入 META-INF 文件夹中,还是可以指定应替换文件的源位置?
  • 我不喜欢那种“接触”。有没有办法在不修改时间戳的情况下强制替换?
  • 字符编码、不寻常的文件名和行尾如何处理?

关于bash - 如何从 bash 替换 war 文件的 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561577/

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