我的bash脚本有问题

问题描述 投票:0回答:1

我正在编写一个脚本,允许用户通过允许他们输入文件名来创建他们选择的文件的备份。然后,文件将进行备份,然后在其名称的末尾加盖日期并保存在主驱动器上。但每当我尝试运行它我得到一个错误: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
linux bash scripting
1个回答
2
投票
  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
© www.soinside.com 2019 - 2024. All rights reserved.