【发布时间】:2022-01-14 03:23:37
【问题描述】:
#!/bin/bash
set -o errexit
set -o nounset
#VAF_and_IGV_TAG
paste <(grep -v "^#" output/"$1"/"$1"_Variant_Filtering/"$1"_GATK_filtered.vcf | cut -f-5) \
<(grep -v "^#" output/"$1"/"$1"_Variant_Filtering/"$1"_GATK_filtered.vcf | cut -f10-| cut -d ":" -f2,3) |
sed 's/:/\t/g' |
sed '1i chr\tstart\tend\tref\talt\tNormal_DP_VCF\tTumor_DP_VCF\tDP'|
awk 'BEGIN{FS=OFS="\t"}{sub(/,/,"\t",$6);print}' \
> output/"$1"/"$1"_Variant_Annotation/"$1"_VAF.tsv
如果我在终端中运行它而不使用它显示没有语法错误的变量,我的上面的代码最终会出现语法错误
sh Test.sh S1 Test.sh:6:Test.sh:语法错误:“(”意外
paste <(grep -v "^#" output/S1/S1_Variant_Filtering/S1_GATK_filtered.vcf | cut -f-5) \
<(grep -v "^#" output/S1/S1_Variant_Filtering/S1_GATK_filtered.vcf | cut -f10-| cut -d ":" -f2,3) |
sed 's/:/\t/g' |
sed '1i chr\tstart\tend\tref\talt\tNormal_DP_VCF\tTumor_DP_VCF\tDP'|
awk 'BEGIN{FS=OFS="\t"}{sub(/,/,"\t",$6);print}' \
> output/S1/S1_Variant_Annotation/S1_VAF.ts
我的 vcf 文件如下所示:https://drive.google.com/file/d/1HaGx1-3o1VLCrL8fV0swqZTviWpBTGds/view?usp=sharing
【问题讨论】:
-
请edit在问题本身中提供一个(小)纯文本输入示例。
-
错误信息表明您正在使用
sh运行脚本。如果要使用 Bash 功能,则需要使用bash。特别是,进程替换<(command)不能移植到 POSIXsh -
不清楚您是想将其转换为
sh脚本语法还是只是错误地运行代码。我已经发布了一个假设前者的答案,但我无法对其进行测试(拒绝连接到 Google Drive)。 -
@tripleee 我刚刚使用了 chmod 777 使我的程序可执行。然后我只是使用 bash test.sh 或 ./test.sh 运行它
-
无论您希望完成什么,
chmod 777都是错误且危险的。您绝对不想这样做在任何情况下向所有用户授予对可执行文件或系统文件的写入权限。您将希望尽快恢复正常权限(对于您的用例,可能是chmod 755)并在尝试再次使用之前了解 Unix 权限模型。如果这种情况发生在可以访问 Internet 的系统上,请检查入侵者是否可以利用它来提升他们的权限。