Bash
如何將一個簡單的 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
順便說一句,如果您想知道它的作用,它是一種小型病毒,它會在您刪除文件夾時使文件夾自我複制。如果你在桌面上執行它會更好。
變數的初始化被忽略了。如果
${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