我有一个函数“checkExist”,它接受一个命令并根据输出文件是否已经存在来执行它。我传递一个这样的命令,其中file1和file2只是命令创建的输出文件的名称,所以如果它们已经存在,它会询问你是否要覆盖,否则它会跳过:
checkExist file1 file2 command1 command2
在实际使用中这样:
checkExist 1.txt 2.txt "echo $1 | awk '$5 <= 10 {print $3, $4}'" "echo $2 | awk '$5 <= 10 {print $3, $4}'"
$ 1和$ 2以上是包含函数checkExist的脚本“smartfilter.sh”的输入。所以它们只是文件输入。
稍后在checkExist函数中,如果用户键入'Y / y'进行覆盖,或者文件尚不存在,那么它将
eval $3 &
eval $4 &
wait
我得到一个错误:
awk: >= 10 {print , }
awk: ^ syntax error
awk: >= 10 {print , }
awk: ^ syntax error
awk: >= 10 {print , }
awk: ^ syntax error
awk: cmd. line:1: >= 10 {print , }
awk: cmd. line:1: ^ unexpected newline or end of string
我知道这是关于awk和eval周围的单引号'
没有正确解析它们。我试过\'
,但这也不起作用。有没有正确的方法来做到这一点?
答案 0 :(得分:2)
checkExist 1.txt 2.txt "echo $1 | awk '\$5 <= 10 {print \$3, \$4}'" "echo $2 | awk '\$5 <= 10 {print \$3, \$4}'"