我的bash脚本有问题



im编写一个脚本,允许用户通过允许他们输入文件名来创建他们选择的文件的备份。然后,该文件将备份,然后在其名称的末尾加盖日期并保存在家庭驱动器上。但是每当我尝试运行它时,我都会出现一个错误:cp:'_backup_2017_12_16'

之后缺少目标文件操作。

这是我的代码:

title="my script 3" 
prompt="Enter:"        
options=("create a backup of a file")  
echo "$title"
PS3="$prompt "
select opt in "${options[@]}" "Quit"; do 
    case "$REPLY" in
esac
    cp "$filename""${file}_backup_$(date +%Y_%m_%d)"
done
  1. 您的case语句当前为空。您需要它来处理您选择的选项
  2. 参数之间需要有一个空间: cp source dest
  3. 如果您将数组用于选项,也可以将Quit放入其中
  4. 如果选择创建备份的选项,则需要提示用户输入文件名。read命令用于获取用户输入

将所有内容放在一起,您的脚本看起来像这样:

#!/usr/bin/env bash
options=("Backup" "Quit")
prompt="Enter: "        
title="My script 3" 
echo "$title"
PS3=$prompt
select opt in "${options[@]}"; do
   case $opt in
      "Backup")
          IFS= read -r -p "Enter filename: " filename 
          cp -- "$filename" "${filename}_backup_$(date +%Y_%m_%d)" && echo "Backup created..."
          ;;
        "Quit") break ;;
             *) echo "Wrong option..." ;;
   esac
done

最新更新