如何在Shell脚本中编写RegEx?

时间:2019-06-17 07:31:23

标签: linux

如果任何输入参数包含可能的shell注入命令,如何在Shell脚本中编写RegEx以使退出代码为1的脚本失败。一个或两个例子就足够了。请帮助。

这是代码段:

invalid_format="^.*[;&|].*$"

invalid_format2="rmdir"

if [ "$LOCAL_DIR" =~ "$invalid_format" -o "$LOCAL_DIR" =~ "$invalid_format2" ]; 
then

echo "Error! LOCAL_DIR cannot contain command chaining characters like ; && ||"

exit 1

fi

但是,它失败并显示以下错误:

[: too many arguments

2 个答案:

答案 0 :(得分:0)

使用grep并将您的字符串输入#!/bin/bash STRING_TO_CHECK="abc" REGEX="b" echo "$STRING_TO_CHECK" | grep -E "$REGEX" if [ $? -eq 1 ] then # regex not found else # regex found fi ,然后检查返回值。

{{1}}

答案 1 :(得分:0)

谢谢大家..在这里,我已经完成了。

invalid_format="(^.[;&|].$)|(\brmdir\b)|(\bls\b)|(rm\s-)|(\bping\b)"

if [[ $LOCAL_DIR =~ $invalid_format ]]; then

echo "Error! LOCAL_DIR cannot contain command chaining characters like ; && || or possible shell injection commands"

exit 1