这是我的问题。我有脚本,我想确保调用脚本时输入的参数与脚本中的变量名匹配。
例如:
./valid foo <- 是脚本调用
#!/bin/bash
PARAM=$1
VAR=/foo/
if grep -c $PARAM == $VAR
then
echo yes
fi
echo no
我在使用 grep 时遇到了最糟糕的情况,我不确定如何在脚本中正确使用它,并且在搜索了互联网之后,我认为我需要一些关于我的问题的具体反馈。
谢谢,
EA
这是我的问题。我有脚本,我想确保调用脚本时输入的参数与脚本中的变量名匹配。
例如:
./valid foo <- 是脚本调用
#!/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 ]]
。)
您可以在脚本中搜索,因为声明是名称后跟等号:
如果 egrep "^\s*$PARAM=" $0 然后 回声是的 别的 回声不 菲
列出变量使用
set -o posix ; set
posix thingie 防止列出功能。
为了隔离脚本本地的参数,从 shell 运行它并存储结果,然后从你的脚本运行它并比较输出
(set -o posix ; set) >/tmp/variables.before
(set -o posix ; set) >/tmp/variables.after