Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 复制粘贴代码可以工作,但不能作为脚本_Bash_If Statement_Scripting - Fatal编程技术网

Bash 复制粘贴代码可以工作,但不能作为脚本

Bash 复制粘贴代码可以工作,但不能作为脚本,bash,if-statement,scripting,Bash,If Statement,Scripting,我编写了一个脚本,其中包含六条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}

我编写了一个脚本,其中包含六条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)。我有一种类似的感觉,但我在回复中找不到我的问题的答案

欢迎提出任何意见


Niwatori

你也许应该看看shebang。我认为正确的用法应该是
#/usr/bin/env bash
#/bin/bash

谢谢您的帮助,非常感谢。谢邦似乎不是问题所在,不过谢谢你指出这一点。Shellcheck.net提醒我使用

[[]

对于不带引号的变量,但这也不能解决问题。以下是出现的问题以及我如何“修复”它:

对于每个变量,使用相同的命令(工具),该命令依赖于支持文件(格式相似但内容不同)。最初,在每个if语句之前,我用当前变量所需的支持文件替换了前一个变量的支持文件。出于某种原因(奇怪的原因,任何想法都是受欢迎的),这种情况并不总是正确发生的。 作为一种快速解决方法,我制作了六个版本的工具,所有版本都有不同的支持文件,并在每个if语句之前使用PYTHONPATH=/path/to/version/:$PYTHONPATH。最佳做法是调整该工具,以便它可以使用不同的支持文件或处理重复任务的选项,但我目前没有时间

祝你今天愉快,
Niwatori

请首先在粘贴您的脚本,并尝试执行此处提出的建议。