我编写了一个名为“isinFile.sh”的小 bash 脚本,用于检查是否可以在文件“file.txt”中找到赋予脚本的第一个术语:
#!/bin/bash
FILE="file.txt"
if [ `grep -w "$1" $FILE` ]; then
echo "true"
else
echo "false"
fi
但是,像这样运行脚本
> ./isinFile.sh -x
中断脚本,因为-x
被解释grep
为一个选项。所以我改进了我的脚本
#!/bin/bash
FILE="file.txt"
if [ `grep -w -- "$1" $FILE` ]; then
echo "true"
else
echo "false"
fi
--
用作 grep 的参数。现在运行
> ./isinFile.sh -x
false
作品。但是是否使用--
正确且唯一的方法来防止 bash 脚本中的代码/选项注入?我没有在野外看到它,只发现它在ABASH:Finding Bugs in Bash Scripts中提到过。