清理 bash 参数

清理 bash 参数

我有一个脚本,它接受用户输入并执行很多操作。我担心的一件事是它需要一个文件名并删除该文件。例如 rm -rf $arg1。

从技术上讲,用户可以在此参数中输入 / 并破坏内容。我该如何做到这一点,以便在实际执行 rm 命令之前转义所有符号(我的要求只是字母和数字,因为所有事情都发生在一个目录中)。

我想出了一个echo "$name" | grep -v symbols > $newname

我不确定这是否是一个好方法。您对此有何建议。

答案1

  1. 使用 grep 检查(对于/*):

    if echo "$user_cmd" | grep '*\|\/'; then
    ...
    fi
    
  2. 但是......您应该将其视为权限问题。将使用该脚本的用户分配到具有锁定权限的组。这比仅仅删除字符要好,因为句点 ( .) 可以用于文件扩展名 ( .JPG) 和../../

相关内容