如何将一个简单的 shell 脚本压缩到一行?

如何将一个简单的 shell 脚本压缩到一行?

我的一个朋友制作了这个超酷的 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

相关内容