【发布时间】:2016-07-06 14:43:34
【问题描述】:
在 shell 脚本中进行命令替换时遇到了一些问题。我以前在另一个系统上使用过这个脚本,所以不确定这里发生了什么。似乎无论我如何附上设置变量的命令,我都会得到一个空变量。我尝试了许多不同的方法来将它们括起来($()、反引号、引号)。如果有帮助,我正在尝试提交一个数组作业。
#!/bin/bash
#BSUB -q shared
#BSUB -W 23:55
#BSUB -M 51200
#BSUB -J windowCovR1
#BSUB -R "span[hosts=1]"
mem=$LSB_JOBINDEX
sample=`head -n "$mem" bednames.txt | tail -1 | awk '{print $2}'`
eval ${sample}
echo ${sample}
$mem 设置正确,与sample 行有关。 echo 命令打印一个空行。
【问题讨论】:
-
我认为这并不能真正解决这个问题......这对我来说以前有效(在不同的系统上),所以不确定现在发生了什么。
-
也许
bednames.txt是空的?从文件中获取行N的更好方法可能是sample=$(awk -vlineno=${mem} 'NR == lineno { print $2 }' bednames.txt)... -
它不是空的......我最终用一个不理想的循环来做这个。如果我解决这个问题会更新。
标签: linux unix lsf command-substitution