bash/ksh grep 脚本接受多个参数

bash/ksh grep script take more than one argument

   #!/bin/ksh
if [ -n "" ]
then
    if grep -w -- "" codelist.lst
    then
        true
    else
        echo "Value not Found"
    fi
else
    echo "Please enter a valid input"
fi

这是我的脚本,它现在完全按照我想要的方式工作,如果我添加更多参数,我想添加它会给我多个输出,我该怎么做?

所以例如我做 ./test.sh apple 它会在 codelist.lst 中 grep apple 并给我输出:Apple

我想做 ./test.sh apple orange 并且会做: 苹果 橙色

你可以用 shift 和一个循环来做到这一点,比如(在 bashksh 中都有效):

for ((i = $#; i > 0 ; i--)) ; do
    echo "Processing ''"
    shift
done

你会注意到我还选择 使用 [[ -n "" ]] 方法,因为这会提前终止循环并使用空字符串(例如 ./script.sh a b "" c 不做就停止 c).

迭代位置参数:

for pattern in "$@"; do
  grep -w -- "$pattern" codelist.lst || echo "'$pattern' not Found"
done

对于只调用一次 grep 的更高级用法,请使用 -f 选项和 shell 进程替换:

grep -w -f <(printf '%s\n' "$@") codelist.lst