Производить команды произвольно

Я хочу запустить одну из двух команд C1 и C2 в случайном порядке. Как это сделать в командной строке (bash)? Поймите, если один лайнер возможен.

    3 Solutions collect form web for “Производить команды произвольно”

     if (( RANDOM % 2 )); then C1; else C2; fi 

    В вашем специальном случае:

     C$((RANDOM%2+1)) 

    будет работать 🙂 И эй, это самый короткий ответ!

    Вы можете сделать что-то подобное в Bash:

     $ (( RANDOM%2 == 0 )) && C1 || C2 

    Это порождает случайное число, либо 0, либо 1. Если оно равно 0, то выполняется C1, иначе выполняется C2, если это не так.

    пример

     $ (( RANDOM%2 == 0 )) && echo 0 || echo 1 1 $ (( RANDOM%2 == 0 )) && echo 0 || echo 1 0 

    ПРИМЕЧАНИЕ. Первым символом является $ prompt.

    другой пример

    Если вы заинтересованы в том, чтобы C1 был терпеть неудачу, чтобы C2 мог работать, вы могли бы реструктурировать вышеупомянутое так:

     (( RANDOM%2 == 0 )) && CMD=C1 || CMD=C2 $CMD 

    зачем использовать это над оператором if / then?

    Этот ответ подвергся критике, но есть способ моего безумия. Хотя этот шаблон может казаться более неясным, чем если бы, то я нахожу его более читабельным и компактным, когда делаю что-то вроде следующего:

     #!/bin/bash CMD="" DIRS="/etc /home /www /data1 /data2 /var/log /var/spool/mail" FILE="/backup/$(hostname)-$(date +'%m-%d-%y').tar.gz" [ "$1" == "nas" ] && CMD="lftp -u user,password -e 'cd /dump/; mput /backup/*; quit' nas.mylan.com" || : [ "$1" == "scp" ] && CMD="scp /backup/* scponly@dumpserver:incoming' username" || : [ "$1" == "tape" ] && CMD='tar -cf /dev/st0 /backup/*' || : [ "$CMD" == "" ] && exit 1 || : # make a backup tar -zcvf $FILE $DIRS # Now depend upon circumstances run a backup command $CMD 

    Рекомендации

    • Совет скрипта оболочки Bash: запуск команд из переменной
    Interesting Posts

    Почему параметр $ 0 дает мне только базовое имя вместо полного пути после преобразования x-shellscript в x-исполняемый?

    вставить модуль в ядро

    Невидимый курсор после установки FGLRX (Debian Jessie)

    Перемещение файлов по дате в другую папку с использованием CLI

    Есть ли способ заставить «mv» терпеть неудачу?

    Как переделать ключ блокировки кеша в ctrl + x в x.org?

    Как использовать маршрутизацию для использования следующего доступного inetface

    Мониторинг отравления ARP

    Как я могу совместно использовать внутренний диск через NFS? (Что я делаю не так?)

    Получить «python-keyring», чтобы остановить запрос пароля «зашифрованный ключ»

    Когда использовать escape-код bash ANSI C, например $ '\ n'

    Какой самый быстрый (процессорный) способ получить мою текущую ветку git?

    Почему эта консольная конфигурация не привязана к фону в i3wm?

    Linux – Сброс корневого концентратора Linux Foundation 2.0

    Конфигурация установки Apache не может найти PCRE? (pcre-config для libpcre не найден)

    Linux и Unix - лучшая ОС в мире.