-4

我是 bash 新手,我对以下代码有一个简单的问题:

echo "xyz" > file
f1="xy"

while cat file | grep $f1 #this is inefficient, I know
do
  set arg1 $1 # ok what's that?!
done

cmd参数:test1

问题 1:set arg1 $1将 cmd 参数设置为“arg1 test1”,对吗?arg1只是一个随机的名字?

问题2:whilecat file | grep $f1只有$f1在文件中存在才返回true,否则不会进入while循环。正确的?

4

1 回答 1

3

你已经回答了你自己的问题。 但不要忘记变量周围的引号。 此外,您不必cat用于传递文件,grep因为grep允许您指定文件。

这是一个稍微改进的版本:

echo 'xyz' > file
f1='xy'

while grep -q "$f1" file; do # will loop forever if this file contains $f1 pattern.
    set arg1 "$1"
done
于 2013-08-30T21:10:41.330 回答