如何让我的脚本识别文件路径?[复制]

How can I get my script to recognize a file path? [duplicate]

提问人:Calico Cat 提问时间:7/30/2023 最后编辑:CyrusCalico Cat 更新时间:7/30/2023 访问量:33

问:

因此,我正在制作我认为是一个简单的脚本,用于将多个文件移动到新位置。我想问的是文件去哪儿了。所以我输入了类似的东西

~/i/want/to/go/here

提示后。

并且脚本似乎无法将其视为有效,即使我从命令行直接复制并过去也是如此。

我尝试过$location周围的引号,双引号,提示后有一个空格,多次检查我的文件路径,直接复制粘贴我的路径。

当它说它正在检查路径时,它完美地陈述了它,但它似乎无法验证它是否存在。

I=INCAR
K=KPOINTS
o=openmpiscript
P=POSCAR
s=submit.vasp

echo "we are going to move INCAR,KPOINTS,openmpiscript,POSCAR, and submit.vasp to a desired location"
echo "Just tell me where to put them and I will automatically move all those files on your behalf."
read -p "location please:" location

echo "ok we can check and see whether or not $location is a real place"

if [[ -d $location ]];
then
    echo "yup, $location is there"
else
    echo "hmmm, this might not be a working directory path"
    exit 1
fi

哦,我在上面列出了我尝试过的内容,但基本上我尝试了引号,没有引号,调整我的路径,通过使用 cd 从字面上转到那里然后复制粘贴来验证我的路径。

结果是它退出了,因为它不认为路径有效,并且它看不到该目录,即使它在那里。

bash shell if-statement 波浪号扩展

评论


答:

0赞 glenn jackman #1

请点击指向重复问题的链接。

它不起作用的原因:bash 在扩展变量之前扩展了波浪号。然后它不会回去进行第二轮扩展。

请注意 https://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions 中扩展的顺序