这是我的问题。我有脚本,我想确保在脚本被调用时输入的参数与脚本内的变量名称匹配。Bash脚本:greping参数
例如:
./valid富< - 作为脚本调用
#!/bin/bash
PARAM=$1
VAR=/foo/
if grep -c $PARAM == $VAR
then
echo yes
fi
echo no
我用grep具有最糟糕的时候,我不知道如何正确使用它的内部脚本和淘宝互联网之后,我想我需要一些关于我的问题的具体反馈。
感谢,
EA
这是我的问题。我有脚本,我想确保在脚本被调用时输入的参数与脚本内的变量名称匹配。Bash脚本:greping参数
例如:
./valid富< - 作为脚本调用
#!/bin/bash
PARAM=$1
VAR=/foo/
if grep -c $PARAM == $VAR
then
echo yes
fi
echo no
我用grep具有最糟糕的时候,我不知道如何正确使用它的内部脚本和淘宝互联网之后,我想我需要一些关于我的问题的具体反馈。
感谢,
EA
这并不强劲,但你可以这样做:
if echo "$VAR" | grep -q "$PARAM"; then
它可能是更好地简单地做:
if test "$VAR" = "$PARAM"; then
如果你是试图匹配正则表达式,bash允许:
if [[ "$VAR" =~ "$PARAM" ]]; then
匹配固定字符串$VAR
与正则表达式$PARAM
。如果$VAR
是正则表达式,则应该颠倒参数的顺序。 (也就是说,[[ "$PARAM" =~ "$VAR ]]
)
可能需要'[[$ PARAM =〜$ VAR]]' - 看起来像$ VAR是模式。 – 2013-02-25 21:37:48
@EricAnderson,在这里请注意'$ VAR'应该是'“foo”'(没有斜杠) – 2013-02-25 21:38:28
也许'[[“$ PARAM”=〜$ VAR]] - PARAM可能需要引用,VAR不能如果它应该是一个正则表达式,则被引用。 – William 2013-02-25 21:41:45
你可以在你的脚本中进行搜索,因为该声明是在名称后面加上一个等号:
if egrep "^\s*$PARAM=" $0 then echo yes else echo no fi
列出变量使用
set -o posix ; set
的POSIX thingie阻止功能列表。
为了分离参数本地脚本,从shell中运行它,并存储结果,然后 从脚本运行和比较输出
(set -o posix ; set) >/tmp/variables.before
(set -o posix ; set) >/tmp/variables.after
你确定你需要的grep?为什么不''如果[“$ PARAM”==“$ VAR”]' – ryanbwork 2013-02-25 21:17:42
Eric,这应该是完全匹配还是正则表达式匹配? – 2013-02-25 21:39:15