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
- 您的
case
语句当前为空。您需要它来处理您选择的选项 - 参数之间需要有一个空间:
cp source dest
- 如果您将数组用于选项,也可以将
Quit
放入其中 - 如果选择创建备份的选项,则需要提示用户输入文件名。
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