空白在bash中究竟意味着什么?

空白在bash中究竟意味着什么?,第1张

概述空白在bash中究竟意味着什么?

我有这样的东西:

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

我想从$tempPBXProjfilePath提取子string。 这是正确的。 但是,如果我这样写:

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

这是错误的。 区别在于variables之后的空格。

我知道直接variables之后没有空格。 但等号后的空格是什么意思? 有没有地方空白有特殊的意义?

sh中的“&>>”在Ubuntu 16.04.2和Fedora 24中performance方式各不相同

如何在linux shell脚本中查找和删除基于date的文件而不查找?

为什么redirect符号会改变ls的行为?

如何以编程方式检测linux或OS X中的可用实用程序

Bash:从文本文件VAR = VALUE格式中读取variables

getopts不工作 – bash

将所有邮件redirect到文件

“mv file1 * .file1”是做什么的?

完成function读取文件时,Bash完成有时会对我的terminal进行网格划分

分割成多行时如何避免回显中的空格

变量赋值

变量赋值的语法是:

name=value

请注意, =号旁边没有空格。 如果值有空格或特殊字符,则应该用单引号括起来:

name='value with spaces or special characters'

或用双引号进行可变扩展 :

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 扩展的参数调用echo命令,并将projectname环境变量设置为空值。

而这个命令:

projectname=echo $tempPBXProjfilePath

将projectname环境变量设置为echo字符串,并调用从$tempPBXProjfilePath变量扩展的命令。

注意,如果一个变量没有用双引号括起来,那么其值中的特殊字符就会被shell解释。 为了防止重新解释特殊字符,你应该使用弱引用: "$variable" 。 如果要防止字符串值中的变量扩展,请使用单引号: 'some value' 。

Bash在每个空白处(空格或制表符)将每一行分成单词。

它找到的第一个单词是要执行的命令的名称,其余的单词成为该命令的参数。

所以当你通过

projectname=echo

bash理解projectname = echo作为变量赋值,并且

$tempPBXProjfilePath | sed "s/.*/(.*).xcodeproj.*$/1/g";

作为命令! (正如Chris Dodd指出的那样)

空白

在赋值给变量时,在等号(=)的一边或两边放置空格将会失败。

错误1

example = Hello

错误2

example= Hello

错误3

example =Hello

唯一有效的形式是变量名和赋值之间没有空格:

正确1

example=Hello

正确2

example=" Hello"

你可以看到更多:

http://wiki.bash-Hackers.org/scripting/newbIE_traps

总结

以上是内存溢出为你收集整理的空白在bash中究竟意味着什么?全部内容,希望文章能够帮你解决空白在bash中究竟意味着什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存