我的一个朋友制作了这个超酷的 shell 脚本,我想将其转换为一行代码。转换并执行它后,我注意到它没有按预期工作。没有任何奇怪的错误,我做错了什么。这是之前和之后的代码。
前
folders=(hydra1)
num=1
while :
do
for i in ${folders[@]}
do
if [ ! -d $i ]
then
mkdir $i
mkdir hydra$num
folders+=(hydra$num)
((num++))
fi
done
sleep 0.1
done
后
while :; do for i in ${folders[@]}; do if [ ! -d $i ]; then mkdir $i; mkdir hydra$num; folders+=(hydra$num); ((num++)); fi; done; sleep 0.1; done
顺便说一句,如果您想知道它的作用,它是一种小病毒,当您删除文件夹时,它会创建文件夹自我复制。如果在桌面上运行它会更好。
答案1
变量的初始化被省略了。如果${folders[@]}
为空,则永远不会进入 for 循环。
答案2
folders=(hydra1); num=1; while :; do for i in ${folders[@]}; do if [ ! -d $i ]; then mkdir $i; mkdir hydra$num; folders+=(hydra$num); ((num++)); fi; done; sleep 0.1; done