我必须编写一个小的bash脚本来确定字符串是否对bash变量命名规则有效。我的脚本接受变量名作为参数。我试图用我的正则表达式将该参数传递给grep命令但是我尝试了一切,grep尝试打开作为文件传递的值。
I tried placing it after the command as such
grep "$regex" "$1"
and also tried passing it as redirected input, both with and without quotes
grep "$regex" <"$1"
两次grep都试图将其作为文件打开。有没有办法将变量传递给grep命令?
答案 0 :(得分:7)
您的示例都将“$ 1”解释为文件名。要使用字符串,您可以使用
echo "$1" | grep "$regex"
或特定于bash的“here string”
grep "$regex" <<< "$1"
你也可以在没有grep with
的情况下更快地完成[[ $1 =~ $regex ]] # regex syntax may not be the same as grep's
或者如果您只是检查子字符串,
[[ $1 == *someword* ]]
答案 1 :(得分:0)
您可以使用bash内置功能=~
。像这样:
if [[ "$string" =~ $regex ]] ; then
echo "match"
else
echo "dont match"
fi