Bash - 读取对复制文件或目录的响应

时间:2016-12-20 19:16:35

标签: bash shell

我尝试编写shell脚本以根据用户响应复制文件。我想要做的一个例子:

#!/bin/bash
echo "What is the name of the user?: "
read RESPONSE
cp /home/$RESPONSE/file.txt /home/$RESPONSE/backup/file_backup.txt

但是,我的复制命令似乎没有正确接受读取变量。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

我想出了这个问题。我之间有一些命令,然后有第二次读取RESPONSE命令,这是不需要的。换句话说,作为一个例子,我有这个:

#!/bin/bash
echo "What is the name of the user?: "
read RESPONSE
rsync -a /home/$RESPONSE /backup
read RESPONSE
cp /home/$RESPONSE/file.txt /home/$RESPONSE/backup/file_backup.txt

另外,@ GeorgeVasiliou说得对,我还需要将它包含在引号中。有用的是:

#!/bin/bash
echo "What is the name of the user?: "
read response
rsync -a "/home/$response/" /backup
cp "/home/$response/file.txt" "/home/$response/backup/file_backup.txt"

答案 1 :(得分:1)

以下代码可实现您的目标。它还检查用户是否存在,以及用户是否在尝试保存文件之前创建了/ backup /文件夹(如果用户不存在,那么/ home / user / ...也应该不存在并且脚本会失败)。

private countdown: Countdown = {days: null, hours: null, minutes: null, seconds: null};

修改:编辑了上面的代码以添加一些改进。