【发布时间】:2021-01-20 14:02:05
【问题描述】:
我编写了一个包含六个 if 语句的脚本,如下所示:
#!/usr/bin/bash
if [ -n $var1 ]
then
for f in /path/*.fastq.gz
do
x=${f/%.fastq.gz/_sample1-forward.fastq.gz}
y=${f/%.fastq.gz/_sample1-forward.out}
q=${f/%.fastq.gz/_temp.fastq.gz}
command [options] -i $f -o $temp${x##*/}
cp $temp${x##*/} $temp${q##*/}
done
else
echo "no $var1"
for f in /path/*.fastq.gz
do
q=${f/%.fastq.gz/_temp.fastq.gz}
cp $f $temp${q##*/}
done
fi
其他五个语句对 var2 到 var6 执行类似的任务。当我运行脚本时,我得到了意外的输出(没有错误没有警告),但是当我将每个 if 语句复制粘贴到终端时,我最终得到了我期望的确切结果。几个小时以来,我一直在寻找隐藏的字符或语法问题。这可能是外壳问题吗?在 OSX 上编写的脚本(默认 zsh)并在服务器上执行(默认 bash)。我感觉这个issue 很相似,但我在回复中找不到我的问题的答案。
欢迎提出任何想法!
庭取
【问题讨论】:
-
请先将您的脚本粘贴到shellcheck.net,然后尝试实施那里提出的建议。
标签: bash if-statement scripting