在 bash 中运行随机 shuf 命令

在 bash 中运行随机 shuf 命令

我是 Bash 编程新手。我正在尝试创建一个 shell 命令,该命令将从命令列表中随机选择,然后运行特定命令。

这就是我所拥有的:

#! /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

有人能修正我的代码,让它正常工作吗?任何帮助都将不胜感激。

答案1

该脚本的语法不正确,但很容易修复:

#!/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

在此过程中,我还做了其他一些改进:

  • 不要重复自己:将公共目标目录提取到变量中
  • 无需复制单个文件-r的标志cp

相关内容