gpt4 book ai didi

linux - 发现在脚本中不起作用,在终端提示符下工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:36 25 4
gpt4 key购买 nike

我正在尝试在 linux(ubuntu 和 fedora)中运行 bash 脚本,但是 find 命令不起作用。

search=\"*${exten[iterext]}\"
find $direc{iterdir} $r_option -iname $search exec -rm {} \\\;

现在解释变量:Exten 是从文本文件中读取文件扩展名的数组(这里没问题)direc 也是从命令行读取的目录数组。Iterdir 和 iterext 是 cicle 整型变量。

现在我有两个问题:

1- 如果我在脚本中运行此查找命令,则不会删除或显示它;但是,如果我在 find 之前放一个 echo,然后将输出复制粘贴到命令提示符下,find 就可以正常工作。我已经在 ubuntu 和 fedora 下尝试过该脚本,所以我认为这不是 bash 配置问题。我应该注意到 $search 似乎存在这个问题,因为我将 $search 替换为硬编码字符串(如“*txt”)并且它在脚本内部起作用,因此它似乎是一个引用问题。

2 - 我运行了整个查找命令,还得到了“-exec”的 find:missing 参数

请帮忙:-(这让我发疯。

最佳答案

首先将所有内容放在 find 命令中,然后再考虑对其进行参数化。

  1. ${exten[iterext]} 应该是 ${exten[$iterext]}
  2. $direc{iterdir} 应该是 ${direc[$iterdir]}
  3. exec -rm 应该是 -exec rm
  4. \\\; 应该是 \;
  5. 引用变量以防止分词

由于 echo,以下将执行试运行。当您对执行删除的输出感到满意时,只需删除 echo

find "${direc[$iterdir]}" "$r_option" -name "*${exten[$iterext]}" -exec echo rm {} \;

关于linux - 发现在脚本中不起作用,在终端提示符下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265669/

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