无法在bash脚本中删除文件

时间:2018-02-13 06:00:44

标签: bash

我正在尝试编写一个简单的bash脚本来刷新我的记忆并推进我的学习。该脚本应该接受输入,然后删除用户输入的文件。但是rm无效。我试过rm -rrm -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

2 个答案:

答案 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条件,以防您确定用户是否提供了绝对路径。

相关问题