我正在尝试编写一个简单的bash脚本来刷新我的记忆并推进我的学习。该脚本应该接受输入,然后删除用户输入的文件。但是rm
无效。我试过rm -r
,rm -rf
无济于事。但是rm
在脚本之外工作正常。在此先感谢您的帮助。
#!/bin/bash
#This program will delete data
read -p "Please enter a filename:" $filename
if [[ -e $filename ]]; then
echo "Deleting $filename ... one moment"
rm $filename
echo "Done"
else
echo "Ooops, something went wrong.: Try again?, [y,n]?"
fi
答案 0 :(得分:0)
确保脚本在正确的权限下运行,以便它可以实际删除文件,并尝试使用没有空格的文件的绝对路径以确保输入正常
答案 1 :(得分:0)
运行rm
没有完整路径来删除文件总是很危险的。因此,尝试将ABSOLUTE路径添加到您的文件名中,然后将其传递给rm
命令,否则您可能会看到未找到案例文件的后果。
编辑: 您可以将脚本更改为:
#!/bin/bash
#This program will delete data
echo "Please provide file name with complete path which you want to delete: eg--> /tmp/test_file"
read -p "Please enter a filename:" filename
if [[ -e "$filename" ]]; then
echo "Deleting $filename ... one moment"
rm "$filename"
echo "Done"
else
echo "Ooops, something went wrong.: Try again?, [y,n]?"
fi
此外,您还可以在&& "$filename" =~ /\//
条件中添加if
条件,以防您确定用户是否提供了绝对路径。