首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行Docker脚本时未找到文件,但在另一个Docker脚本中找到了该文件

在运行Docker脚本时未找到文件,但在另一个Docker脚本中找到了该文件
EN

Stack Overflow用户
提问于 2020-09-23 13:00:29
回答 1查看 50关注 0票数 0

我正在尝试运行一个由谷歌发布的docker中的脚本。我使用的命令将一些数据文件挂载到docker的一个名为'/input‘的文件中(在docker内部)。当我运行脚本时,它告诉我它找不到输入文件。但是,我使用了-v标志,并且我运行了一个脚本来确保输入文件在那里(在docker中)。所以总而言之-当我运行

代码语言:javascript
复制
find /input -name "*.fasta"

它输出:

代码语言:javascript
复制
/input/ucsc.hg19.chr20.unittest.fasta

,但当我运行脚本时,它会显示

代码语言:javascript
复制
./dv-quick-start: 19: ./dv-quick-start: --ref=/input/ucsc.hg19.chr20.unittest.fasta: not found

完整的脚本:

代码语言:javascript
复制
#!/bin/sh
BIN_VERSION="1.0.0"
INPUT_DIR="${PWD}/quickstart-testdata"
DATA_HTTP_DIR="https://storage.googleapis.com/deepvariant/quickstart-testdata"
OUTPUT_DIR="${PWD}/quickstart-output"

sudo docker run \
  -v "${INPUT_DIR}":"/input" \
  -v "${OUTPUT_DIR}":"/output" \
  google/deepvariant:"${BIN_VERSION}" \
  find /input -name "*.fasta"

sudo docker run \
  -v "${INPUT_DIR}":"/input" \
  -v "${OUTPUT_DIR}":"/output" \
  google/deepvariant:"${BIN_VERSION}" \
  /opt/deepvariant/bin/run_deepvariant \
  --model_type=WGS \ **Replace this string with exactly one of the following [WGS,WES,PACBIO,HYBRID_PACBIO_ILLUMINA]**
  --ref=/input/ucsc.hg19.chr20.unittest.fasta \
  --reads=/input/NA12878_S1.chr20.10_10p1mb.bam \
  --regions "chr20:10,000,000-10,010,000" \
  --output_vcf=/output/output.vcf.gz \
  --output_gvcf=/output/output.g.vcf.gz \
  --intermediate_results_dir /output/intermediate_results_dir \ **This flag is optional. Set to keep the intermediate results.

完整输出:

代码语言:javascript
复制
/input/ucsc.hg19.chr20.unittest.fasta
--ref is required.
Pass --helpshort or --helpfull to see help on flags.
./dv-quick-start: 19: ./dv-quick-start: --ref=/input/ucsc.hg19.chr20.unittest.fasta: not found

我觉得有一些误会,我非常感谢任何人的帮助。如果需要更多信息来回答这个问题,请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2020-09-23 22:24:49

您的shell脚本中有一些无关紧要的文本,这会导致问题。删除"replace this string“和"this flag is optional”文本以及它们前面的所有空格,使\成为这些行的最后一个字符。

在shell脚本中,您可以使用\将命令分成多行。但是,\必须是该行中的最后一个字符;如果不是,它将转义它后面的字符。

代码语言:javascript
复制
# one line: ls -al $HOME
ls -al \
  $HOME

# two lines: ls -al " " more text here; $HOME
ls -al \    more text here
  $HOME

在您的示例中,您将一些解释性文本留在

代码语言:javascript
复制
sudo docker run \
  ...\
  --model_type=WGS \ **Replace this string with exactly one of the following [WGS,WES,PACBIO,HYBRID_PACBIO_ILLUMINA]**

# This is seen as a separate command
  --ref=/input/ucsc.hg19.chr20.unittest.fasta \
  ...

因为“替换这个字符串...”文本使\不是该行的绝对最后一个字符,它会导致shell中断命令。然后,您将获得两个命令,一个不带--ref选项的docker run命令,以及一个尝试将--ref=...作为单独命令运行的命令;这与您得到的两个错误相对应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64021321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档