因此,我正在编写这个 bash 脚本来执行各种操作,但最后一步是将四个不同目录的内容移动到一个位置,以便我可以运行 shred 命令或删除或类似的东西(尚不确定是什么)。这是我目前所拥有的
for dir in $dir1 $dir2 $dir3 $dir4; do
mv -vi ./* $CYCL
done
此循环是否会立即从这些目录中删除所有文件和文件夹?还是我必须更改它?
编辑:更改了代码。其中有一个函数,我用原始代码替换了它
答案1
简洁的方式:
mv -vi {$dir1,$dir2,$dir3,$dir4}/* $CYCL
无论如何,我不知道你为什么要使用
-i
要删除的文件选项。你不关心是否有任何内容被覆盖,你只是增加了更多的手动步骤。使用你的循环:
for dir in $dir1 $dir2 $dir3 $dir4; do mv -vi $dir/* $CYCL done
该for var in list; do ; done
语法将按顺序将列表中每个元素的值分配给变量X
,然后运行do
块中的所有内容。如果您没有提及所使用的变量,则不会对其执行任何操作。例如,这将简单地打印“hello”3次:
for i in Tom Dick Harry; do echo hello; done
hello
hello
hello
如果您想要对列表中的元素进行实际操作,则需要引用分配给它们的变量:
$ for i in Tom Dick Harry; do echo hello $i; done
hello Tom
hello Dick
hello Harry
因此,你的循环正在运行mv ./* $CYCL
,这会移动你的当前目录的值$CYCL
。它不会以任何方式触及目录 1-4 的内容。