如何传递此Shell脚本的路径?

如何传递此Shell脚本的路径?,shell,command-line,command,command-line-arguments,Shell,Command Line,Command,Command Line Arguments,这个名为prepareFastaRef.command的小Shell脚本应该接收我作为参数给出的文件名,根据它生成路径,然后在该文件上运行命令。它看起来像: #!/bin/bash REF="~/Dropbox/phd/fastarefs/$1" echo "$REF" samtools faidx "$REF" 我使用以下命令行运行它: prepareFastaRef.command test.fa 但它似乎无法找到该文件: [E::fai_build3_core]无法打开我的文件 ~

这个名为
prepareFastaRef.command
的小Shell脚本应该接收我作为参数给出的文件名,根据它生成路径,然后在该文件上运行命令。它看起来像:

#!/bin/bash

REF="~/Dropbox/phd/fastarefs/$1"
echo "$REF"

samtools faidx "$REF"
我使用以下命令行运行它:

prepareFastaRef.command test.fa
但它似乎无法找到该文件:

[E::fai_build3_core]无法打开我的文件 ~/Dropbox/phd/fastarefs/test.fa

这个问题并不特定于程序
samtools
,因为我与其他人有相同的问题。我可以100%确认文件
test.fa
在那里

我感到困惑的是,仅此命令就可以完美地工作:

samtools faidx ~/Dropbox/phd/fastarefs/off_aa1.fa
因此,如何从Shell脚本中传递路径似乎是一个问题


我遗漏了什么?

重复:在作业中使用此选项:
REF=~/Dropbox/phd/fastarefs/“$1”
(这里引用的不是严格需要的,但通常是良好的实践)。要诊断类似的问题,您可以使用
set-x
运行脚本,您会看到
~
没有得到扩展。或者会告诉您,也