首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么bash中的双引号不能扩展‘’~‘?

为什么bash中的双引号不能扩展‘’~‘?
EN

Stack Overflow用户
提问于 2020-03-31 11:52:06
回答 3查看 34关注 0票数 0

我一开始试过这个:

代码语言:javascript
复制
#!/bin/bash

V8_FOLDER=~/workspace/v8

cd ${V8_FOLDER}

pwd

它工作得很好,输出是/home/myname/workspace/v8

但是当我尝试这样做的时候:

代码语言:javascript
复制
#!/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)

EN

回答 3

Stack Overflow用户

发布于 2020-03-31 11:57:32

我以为这个双引号是

脚本…中无引号的升级版本

你弄错了。

quoting的目的是禁用各种特殊字符的特殊性。例如,如果您有一个名为~的文件(我不推荐这样做),您可以将其称为\~'~'"~"。(或者,因为~只在单词的开头是特殊的,所以您可以将其称为./~。)

为了确保结果中的各种特殊字符不会被视为特殊字符,在扩展项(如${V8_FOLDER} )前后使用双引号是很重要的;但是,当您确实想要禁用的特殊行为时,不能使用双引号,因为它们会禁用它!

票数 3
EN

Stack Overflow用户

发布于 2020-03-31 11:56:45

不使用~,而使用${HOME}~周围的任何类型的引用都会阻止这种代字号的扩展。

票数 1
EN

Stack Overflow用户

发布于 2020-03-31 11:55:38

您可以用$HOME替换~

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

https://stackoverflow.com/questions/60943176

复制
相关文章

相似问题

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