我是 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