Bash

如何將一個簡單的 shell 腳本壓縮成一行?

  • May 26, 2022

我的一個朋友製作了這個超級酷的 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

順便說一句,如果您想知道它的作用,它是一種小型病毒,它會在您刪除文件夾時使文件夾自我複制。如果你在桌面上執行它會更好。

變數的初始化被忽略了。如果${folders[@]}為空,則永遠不會進入 for 循環。

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

引用自:https://unix.stackexchange.com/questions/703910