放入双引号时,重复字符在csh中不适用于grep

时间:2013-11-29 06:15:40

标签: scripting csh

我之前已经发布了一个问题,但现在我理解了这个问题,因此想重新发布。如果没有放在双引号中,*字符在我的csh脚本中被正确解释,但是当我将它放在双引号中时,它没有被正确解释。有谁知道如何使csh正确解释*字符。以下是我的代码:

#!/bin/csh
#set ans=`grep  -E hello\*i ~/wildcard/helloi.txt`
set ans=`grep  -E "hello\*i" ~/wildcard/helloi.txt`
echo $ans

评论集合ans工作正常,但未注释的集合没有。输入文件包含以下内容:

helloiif
helli
helloi

应该打印所有3个。

1 个答案:

答案 0 :(得分:0)

选项1 (带引号,转义*

grep -E "hello*i" ~/wildcard/helloi.txt

选项2 (不带引号,必须转义*

grep -E hello\*i ~/wildcard/helloi.txt

在双引号内,csh 始终扩展它知道的内容,例如*$等。