【发布时间】:2012-07-23 05:01:23
【问题描述】:
我的 bash 脚本有问题,让我陷入困境。我有一段代码应该会引入一些文件:
if [[ $FILENODE == null ]]
then
cp "/home/dash/reference/hg18_bowtie_build/hg18.fa*" "$JOBDIR"
cp "$IN" "$JOBDIR"
else
echo "Copying files from node$FILENODE"
rcp "node$FILENODE-ib:$JOBDIR/hg18.fa*" "node$FILENODE-ib:$JOBDIR/$IN" "$JOBDIR"
fi
通常我们将落入条件的第一部分,因此 cp 命令应该扩展第一个参数中的通配符。我知道我需要双引号我的论点以确保它们被扩展。但是,当我使用 bash -x 执行此脚本时,我看到的是:
+ cp '/home/dash/reference/hg18_bowtie_build/hg18.fa*' /usr/tmp/707361.master.cl.osumc.edu
cp: cannot stat `/home/dash/reference/hg18_bowtie_build/hg18.fa*': No such file or directory
+ cp '*.sort.bam' /usr/tmp/707361.master.cl.osumc.edu
cp: cannot stat `*.sort.bam': No such file or directory
由于某种原因,bash 似乎不仅忽略了我的双引号,而且将它们变成了单引号。变量正在扩展,但通配符没有。如果有人能解释这里发生了什么,我将不胜感激。
【问题讨论】:
-
正如一些人所建议的,我已经尝试删除双引号,并移动尾随双引号以排除通配符。这不会改变输出!
-
bash -x的输出总是有单引号。
标签: bash