我正在编写一个小脚本,在其中我要将变量的值设置为等于命令的输出。但是,有问题的命令是对带有命令行参数的另一个脚本的调用。在这种情况下,我像往常一样使用反引号,但是问题是计算机出现错误,试图将命令行参数解释为命令。
#!/bin/bash
filename="$1"
while read p; do
echo "This is the gene we are looking at: ""$p"
lookIn= `./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri`
echo "$lookIn"
#grep "$p" "$lookIn""/""prokka_""$lookIn""/*.tsv" | awk '{print $1}'
done < $filename
我正在尝试将变量lookIn
设置为等于./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri
的输出,其中./findGeneIn
是一个脚本,而burgdorferi,...,parkeri是命令行参数为./findGeneIn
。
问题是,我收到一条错误消息:“ burgdorferi:找不到命令”。因此,它试图将这些参数解释为命令。我如何才能做到这一点呢?
答案 0 :(得分:3)
lookIn= `./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri`
^
删除多余的空间。分配的等号周围不能有空格。
在此处有空格的情况下,Bash将行解析为var=value command
,它将运行一个命令,其中$var
临时设置为"value"
。或者,在这种情况下,它会将反引号的结果解释为命令名称,并将lookIn=
解释为空变量分配。