executa um comando de um resultado shuf aleatório no bash

0

Eu sou novo em programação no bash. Eu estou tentando criar um comando shell que irá selecionar aleatoriamente de uma lista de comandos e, em seguida, execute o comando específico.

Isso é o que eu tenho:

#! /bin/bash
shuf -e command-1 command-2 command-3 command-4 -n 1

case $-n in

  command-1

cp -r /home/mark/Desktop/PlaylistA/ac.mp3 /home/mark/Desktop/PlaylistSongs/
  ;;

  command-2

cp -r /home/mark/Desktop/PlaylistB/ac.mp3 /home/mark/Desktop/PlaylistSongs/
  ;;

  command-3

cp -r /home/mark/Desktop/PlaylistC/ac.mp3 /home/mark/Desktop/PlaylistSongs/
  ;;

  command-4

cp -r /home/mark/Desktop/PlaylistD/ac.mp3 /home/mark/Desktop/PlaylistSongs/
  ;;

esac

Alguém pode corrigir meu código para que ele funcione? Qualquer ajuda será muito apreciada.

    
por Mark 05.07.2017 / 06:30

1 resposta

0

A sintaxe desse script está incorreta, mas é fácil de corrigir:

#!/bin/bash

cmd=$(shuf -e command-1 command-2 command-3 command-4 -n 1)

target_dir=/home/mark/Desktop/PlaylistSongs

case $cmd in
command-1) cp /home/mark/Desktop/PlaylistA/ac.mp3 "$target_dir/" ;;
command-2) cp /home/mark/Desktop/PlaylistB/ac.mp3 "$target_dir/" ;;
command-3) cp /home/mark/Desktop/PlaylistC/ac.mp3 "$target_dir/" ;;
command-4) cp /home/mark/Desktop/PlaylistD/ac.mp3 "$target_dir/" ;;
esac

Enquanto estava nisso, fiz outras melhorias:

  • Não se repita: extraia o diretório de destino comum para uma variável
  • Não é necessário que o sinal -r de cp copie um único arquivo
por 05.07.2017 / 21:27