为什么要避免使用BASH,我应该使用什么呢?一次又一次,我看到堆栈溢出上的Bash答案eval答案被抨击,双关有意,用于使用这样的“邪恶”结构。为什么eval这么邪恶?如果eval不能安全使用,我应该用什么?
3 回答
慕慕森
TA贡献1856条经验 获得超17个赞
如何制作 eval安全
eval 能,会,可以
function token_quote {
local quoted=()
for token; do
quoted+=( "$(printf '%q' "$token")" )
done
printf '%s\n' "${quoted[*]}"}示例用法:
% input="Trying to hack you; date"
% cmd=(echo "User gave:" "$input")
% eval "$(echo "${cmd[@]}")"User gave: Trying to hack youThu Sep 27 20:41:31 +07 2018date
token_quote():
% eval "$(token_quote "${cmd[@]}")"User gave: Trying to hack you; date%eval
杨__羊羊
TA贡献1943条经验 获得超7个赞
ls -la /path/to/foo | grep bar | bash
(ls -la /path/to/foo | grep bar) | bash
?
- 3 回答
- 0 关注
- 978 浏览
添加回答
举报
0/150
提交
取消
