我是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:虽然cat file | grep $f1
仅在文件中存在$f1
时返回true,否则它将不会进入while循环。正确的吗?
答案 0 :(得分:3)
您已回答了自己的问题。
But do not forget about quotes around your variables.
此外,您不必使用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