0

这是我的问题。我有脚本,我想确保调用脚本时输入的参数与脚本中的变量名匹配。

例如:

./valid foo <- 是脚本调用

#!/bin/bash

PARAM=$1
VAR=/foo/

if grep -c $PARAM == $VAR
then
echo yes
fi

echo no

我在使用 grep 时遇到了最糟糕的情况,我不确定如何在脚本中正确使用它,并且在搜索了互联网之后,我认为我需要一些关于我的问题的具体反馈。

谢谢,

EA

4

3 回答 3

3

这并不可靠,但您可以执行以下操作:

if echo "$VAR" | grep -q "$PARAM"; then 

最好简单地做:

if test "$VAR" = "$PARAM"; then

如果您尝试匹配正则表达式,bash 允许:

if [[ "$VAR" =~ "$PARAM" ]]; then

将固定字符串$VAR与正则表达式匹配$PARAM。如果$VAR是正则表达式,则应颠倒参数的顺序。(即,[[ "$PARAM" =~ "$VAR ]]。)

于 2013-02-25T21:14:10.333 回答
0

您可以在脚本中搜索,因为声明是名称后跟等号:

如果 egrep "^\s*$PARAM=" $0
然后
    回声是的
别的
    回声不
菲
于 2013-02-25T21:42:22.490 回答
0

列出变量使用

set -o posix ; set

posix thingie 防止列出功能。

为了隔离脚本本地的参数,从 shell 运行它并存储结果,然后从你的脚本运行它并比较输出

(set -o posix ; set) >/tmp/variables.before
(set -o posix ; set) >/tmp/variables.after
于 2013-02-25T21:54:14.847 回答