我一开始试过这个:
#!/bin/bash
V8_FOLDER=~/workspace/v8
cd ${V8_FOLDER}
pwd它工作得很好,输出是/home/myname/workspace/v8;
但是当我尝试这样做的时候:
#!/bin/bash
V8_FOLDER="~/workspace/v8"
cd ${V8_FOLDER}
pwd出现错误,输出为:./update_and_compile: line 5: cd: ~/workspace/v8: No such file or directory
我以为双引号是shell脚本中无引号的升级版本,为什么会存在这种不一致?如果这里有一些错误,那么在shell脚本中cd文件夹的正确方法是什么?
bash版本: GNU bash,版本4.4.20(1)-release (x86_64-pc-linux-gnu)
发布于 2020-03-31 11:57:32
我以为这个双引号是
脚本…中无引号的升级版本
你弄错了。
quoting的目的是禁用各种特殊字符的特殊性。例如,如果您有一个名为~的文件(我不推荐这样做),您可以将其称为\~、'~'或"~"。(或者,因为~只在单词的开头是特殊的,所以您可以将其称为./~。)
为了确保结果中的各种特殊字符不会被视为特殊字符,在扩展项(如${V8_FOLDER} )前后使用双引号是很重要的;但是,当您确实想要禁用的特殊行为时,不能使用双引号,因为它们会禁用它!
发布于 2020-03-31 11:56:45
不使用~,而使用${HOME},~周围的任何类型的引用都会阻止这种代字号的扩展。
发布于 2020-03-31 11:55:38
您可以用$HOME替换~。
https://stackoverflow.com/questions/60943176
复制相似问题