如何将shell脚本参数作为要在执行grep命令时使用的变量传递

时间:2014-10-12 14:25:36

标签: bash shell grep

我有一个名为fruit.txt的文件,其中包含水果名称列表(apple,banana.orange,kiwi等)。我想创建一个允许我在调用脚本时传递参数的脚本,即script.sh orange,然后使用grep在文件fruit.txt中搜索变量(橙色)。我有以下脚本......

脚本名称和参数如下: script.sh orange

脚本摘录如下:

#!/bin/bash
nameFind=$1
echo `cat` "fruit.txt"|`grep` | $nameFind 

但是我得到了grep info使用命令,似乎脚本正在等待一些额外的命令等。建议非常感谢。

2 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

#!/bin/bash

name="$1"
grep "$name" fruit.txt

无需一起使用catgrep;您可以在要匹配的模式之后简单地将文件名作为第三个参数传递。如果要匹配固定字符串(即没有正则表达式),还可以使用-F修饰符:

grep -F "$name" fruit.txt

答案 1 :(得分:3)

那里的管道语法不正确。您将grep的输出作为输入传递给名为nameFind的变量。因此,当grep命令尝试执行时,它只获取fruit.txt的内容。这样做:

#!/bin/bash
nameFind=$1
grep "$nameFind" fruit.txt