【发布时间】:2017-03-16 20:56:06
【问题描述】:
晚上好
我有一个任务要完成并尝试了以下但不起作用
#!/bin/bash
FPath=$(grep $1 $HOME/.restore.info | cut -d":" -f2)
FName=$(grep $1 $HOME/.restore.info | cut -d":" -f1)
if [ $# -eq 0 ]
then
echo "No input detected"
exit $?
elif [ "$FName" = $1 ]
then
echo " Match found and restored to its original location"
mv ~/deleted/$1 $FPath
else
echo "File does not exist"
exit $?
fi
它应该将特定文件夹中已删除的文件恢复到其原始位置
但是,它一直说文件不存在,即使文件存在。
如果用户选择覆盖现有文件,我还需要为现有文件创建一个案例。请帮我解决这个问题
感谢您的帮助
【问题讨论】:
-
如果任何文件名包含空格,脚本将由于缺少引号而失败。写
"$1"而不是$1,"$(...)"而不是$(...)等等(但不要引用~,必须保持不引用:) -
感谢您的回复,我已经完成了您所指出的操作,但仍然显示相同的错误消息
-
看来
"$FName" = $1不是真的。所以尝试呼应它们并确保它们是平等的。 -
非常感谢阿拉什。你是绝对正确的路径不正确我已将路径修改如下:并且代码都开始工作#!/bin/bash FPath="$(grep "$1" $HOME/.restore.info | cut -d" :" -f2)" FName="$(grep "$1" $HOME/.restore.info | cut -d":" -f1)" echo $FPath echo $FName if [ $# -eq 0 ] then echo "未检测到输入" exit 1 else if [ "$1" = $FName ] then echo " 找到匹配并恢复到其原始位置" mv ~/deleted/$1 $FPath else echo "文件不存在" exit 1 fi fi跨度>
-
编辑您的问题,以便您可以格式化您的代码。并展示
.restore.info的样子。以及如何调用脚本的示例(带有完整路径的文件?)。
标签: linux bash shell ubuntu unix