我在名為 commands.txt 的文本檔案中有一個命令串列:
cat file1.txt | sort > file1.txt
cat file2.txt | sort > file2.txt
etc
我想要做的是隨機化該檔案,然后以隨機順序執行每一行。我在 cmd.sh shell 腳本中嘗試了以下內容:
while read -r -a array
do
"${array[@]}"
done < <(shuf commands.txt)
而 Bash 所做的只是沖我大喊,這是一個帶有意外標記的語法錯誤 <
這是在 MacOS 10.14 上使用 bash 3.2.57 和 zsh 5.8。
有誰知道如何做到這一點?
uj5u.com熱心網友回復:
您可以將混洗的命令通過管道傳輸到 bash,而無需任何處理:
shuf commands.txt | bash
uj5u.com熱心網友回復:
管道 ( |) 和重定向 ( >) 在變數中不起作用。您可以使用eval "${array[@]}", 或bash -c "${array[*]}"代替。
此外,如果您這樣做cat file > file,file將在cat執行之前被截斷(清空)。所以你只會有空檔案。你可以做sort file1.txt > tmp && mv tmp file1.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369691.html
