Ваша исходная команда может быть упрощена до
shuf -e A B C | tr "\n" " " && echo ""
или
shuffled=( $(shuf -e A B C) ) ; echo ${shuffled[*]}
Который я думаю, немного менее хакерский, а также быстрее по сравнению с моими элементарными тестами.
Если у вас есть файл по адресу ~/test
, который содержит
A B C
D E F
Вы можете перетасовывать и отображать каждую строку с помощью следующей команды
while IFS= read -r line; do shuffled=( $(shuf -e $line) ) ; echo ${shuffled[*]} ; done < ~/test
или в виде скрипта:
#!/bin/bash
while IFS= read -r line
do shuffled=( $(shuf -e $line) )
echo ${shuffled[*]}
done < ~/test
Где вы можете заменить ~/test
на $1
для передачи аргументов сценарию.
результат:
B C A
G E F
Как это работает:
shuf -e
разбивается на пробелы, а также на новые строки... но только потому, что он будет рассматривать ABC как три аргумента.
так shuf -e A B C
перемешает A B и C но shuf -e "A B C"
не будет перемешивать A B и C
Мы можем использовать это для чтения каждой строки в массив, а затем снова распечатать его с помощью echo
.
while IFS= read -r line;
Считывает каждую строку в $line
, когда она передается с <
в этот цикл.
do shuffled=( $(shuf -e $line) )
Создает массив из каждой строки в переменной $shuffled
, буквально расширяя shuf -e $line
до shuf -e A B C
.
echo ${shuffled[*]}
повторяет наш массив, по умолчанию печатая каждый элемент с пробелами между ними
< ~/test
передает строки из ~/test
в наш цикл.
Проблема оказалась в ssl. Перепишите правила предыдущего ssl из этого моментального снимка. Решение состояло в том, чтобы удалить текст, сохранить файл, остановить, запустить httpd, открыть частный браузер и загрузить веб-сайт.