linux – 空白在bash中实际意味着什么?
我有这样的事情:
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’. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |