gpt4 book ai didi

linux - 尝试迭代存储在变量中的文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:09 24 4
gpt4 key购买 nike

我必须遍历存储为变量的 2 个文件,并删除包含存储在另一个变量中的字符串的行:

file1="./file1"
file2="./file2"
text="searched text"
for i in $file1,$file2; do
sed -i.txt '/$text/d' $i
done

文件与脚本位于同一文件夹中。我得到“没有这样的文件或目录”。过去 3 个小时我一直在这个问题上陷入困境,老实说我几乎要退出 Linux。

最佳答案

您的脚本中有几个问题。正确的做法是:

file1="./file1"
file2="./file2"
text="searched text"
for i in "$file1" "$file2"; do
sed -i.txt "/$text/d" "$i"
done

问题:

  • for 需要一个以空格分隔的参数列表,而不是逗号分隔
  • 将变量扩展括在双引号中以防止分词非常重要
  • 您需要双引号来括起 sed 表达式,因为单引号不会扩展内部变量

您可以通过shellcheck发现这些问题以及 Charles 建议的 Debug模式(bash -x script)。

关于linux - 尝试迭代存储在变量中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562688/

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