加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 空白在bash中实际意味着什么?

发布时间:2020-12-14 01:02:50 所属栏目:Linux 来源:网络整理
导读:我有这样的事情: projectName= echo $tempPBXProjFilePath | sed "s/.*/(.*).xcodeproj.*$/1/g"; 我想从$tempPBXProjFilePath中提取子字符串.这是正确的.但是,如果我这样写: projectName=echo $tempPBXProjFilePath | sed "s/.*/(.*).xcodeproj.*
我有这样的事情:

projectName= echo $tempPBXProjFilePath | sed "s/.*/(.*).xcodeproj.*$/1/g";

我想从$tempPBXProjFilePath中提取子字符串.这是正确的.但是,如果我这样写:

projectName=echo $tempPBXProjFilePath | sed "s/.*/(.*).xcodeproj.*$/1/g";

这是错误的.区别在于变量之后的空格.

我知道变量后面没有空格.但是等号后的空白是什么意思.空白有什么特别的意义吗?

解决方法

变量分配

variable assignment的语法是:

name=value

注意,=符号周围没有空格.如果值包含空格或特殊字符,则应使用单引号引用:

name='value with spaces or special characters'

或者使用variable expansion的双引号:

name="stringA $variable stringB"

如果缺少引号,则值部分中的第二个字将被解释为命令.实际上,这是一种将环境变量传递给命令的方法(见下文).

如果缺少该值,则会创建一个值为空的变量.

环境变量

还有另一种语法允许为命令分配环境变量:

nameA=valueA nameB=valueB nameC=valueC command arguments

名称 – 值对用空格字符分隔.

LD_PRELOAD=/path/to/my/malloc.so /bin/ls

在调用/ bin / ls之前,该命令将LD_PRELOAD环境变量分配给/path/to/my/malloc.so.

你的命令

因此,你的命令:

projectName= echo $tempPBXProjFilePath

实际上意味着您从$tempPBXProjFilePath调用带有参数expanded的echo命令,并将projectName环境变量设置为空值.

这个命令:

projectName=echo $tempPBXProjFilePath

将projectName环境变量设置为echo string,并调用从$tempPBXProjFilePath变量扩展的命令.

请注意,如果变量未包含在双引号中,则其值中的特殊字符将由shell解释.为了防止重新解释特殊字符,您应该使用弱引用:“$variable”.如果你想阻止字符串值中的变量扩展,请使用单引号:’some value’.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读