gpt4 book ai didi

arrays - 在 bash 脚本中对每个文件使用 exec

转载 作者:太空狗 更新时间:2023-10-29 12:15:00 25 4
gpt4 key购买 nike

我正在尝试为作业编写一个基本的find 命令(不使用find)。现在我有一组文件,我想对其执行 exec 操作。语法如下所示:

-exec/bin/mv {} ~/.TRASH

我有一个名为 current 的数组,它包含所有文件。我的数组只包含 /bin/mv{}~/.TRASH(因为我移动了 -exec out) 并且在一个名为 arguments 的数组中。

我需要它以便将每个文件传递到 {} 并对其调用 exec。

我在想我应该使用 sed 来替换 {} 的内容,就像这样(在 for 循环内):

for i in "${current[@]}"; do
sed "s@$i@{}"
#exec stuff?
done

我如何执行其他参数?

最佳答案

你可以这样:

cmd='-exec /bin/mv {} ~/.TRASH'    
current=(test1.txt test2.txt)

for f in "${current[@]}"; do
eval $(sed "s/{}/$f/;s/-exec //" <<< "$cmd")
done

使用 eval 命令时要非常小心,因为如果输入来自不受信任的来源,它可能会做一些令人讨厌的事情。


这里尝试避免 eval(感谢@gniourf_gniourf 的评论):

current=( test1.txt test2.txt )
arguments=( "/bin/mv" "{}" ~/.TRASH )

for f in "${current[@]}"; do
"${arguments[@]/\{\}/$f}"
done

关于arrays - 在 bash 脚本中对每个文件使用 exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763882/

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