使用shell脚本参数作为对程序的脚本调用的输入

时间:2016-01-26 10:36:22

标签: bash shell parameters command

我有一个带有3个参数的shell脚本(run.sh):

#!/bin/bash

VAR1=$1
VAR2=$2
VAR3=$3

grep -Pzl "$VAR1(\n|.)*$VAR2(\n|.)*$VAR3" * | xargs -L1 cat

脚本应该使用参数1,2,3并将其传递给grep,以使其运行如下脚本:

./run.sh a b c

我希望它被解释为

grep -Pzl "A(\n|.)*B(\n|.)*C" * | xargs -L1 cat

但似乎没有将我的参数作为命令的参数进行评估,以便在线交换变量。

我对grep条件没有任何问题,而是grep命令的变量按原样处理,并且它没有被“解释”为它包含的内容。

1 个答案:

答案 0 :(得分:-1)

shell用换行符替换所有\ n字符。因此,您的模式不起作用。

如果要匹配文字反斜杠,后跟字母n,则需要编写\\n

更新:这适用于zsh,但不适用于bash。