我有一个名为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使用命令,似乎脚本正在等待一些额外的命令等。建议非常感谢。
答案 0 :(得分:3)
这样的事情应该有效:
#!/bin/bash
name="$1"
grep "$name" fruit.txt
无需一起使用cat
和grep
;您可以在要匹配的模式之后简单地将文件名作为第三个参数传递。如果要匹配固定字符串(即没有正则表达式),还可以使用-F
修饰符:
grep -F "$name" fruit.txt
答案 1 :(得分:3)
那里的管道语法不正确。您将grep的输出作为输入传递给名为nameFind的变量。因此,当grep命令尝试执行时,它只获取fruit.txt的内容。这样做:
#!/bin/bash
nameFind=$1
grep "$nameFind" fruit.txt