我正在阅读bash关于“扩展”的手册,它说它有7种扩展/替换类型,包括“单词拆分”。另一方面,它在该项目的开头说:
拆分成单词后,在命令行上执行扩展。
我不明白什么是“拼成文字”。换句话说,我无法理解“拆分为单词”和“拆分为扩展单词”之间的区别。
请让我知道“将命令行拆分为单词后,在命令行上执行扩展”的内容。方法。
假设是什么意思
$> var1="word splitting"
$> var2="single_word"
$> command var1 var2
“在将其拆分为单词之后,在命令行上执行扩展。” ->解析单词
word1 = command
word2 = var1
word3 = var2
“分词”->通过定界符分配位置参数
$1 = "word"
$2 = "splitting"
$3 = "single_word"
非常感谢你。
当bash手册指出以下内容时:
拆分成单词后,在命令行上执行扩展。
这意味着命令行从一个完整的字符串开始,然后从左到右将该字符串拆分为元字符:
元字符
一个字符,当不加引号时,将单词分开。以下情况之一:
| &; ()<>空格标签
这种分裂产生的结果称为“单词”或“令牌”。
这适用于整个命令行字符串。
相反,所谓的“单词拆分”仅适用于“未引用扩展名”的结果,并且仅使用其中的字符$IFS
进行拆分。
因此,此命令行仅打印两行:
$ a="word splitting" b="single_word"
$ printf '%s\n' "$a" "$b"
word splitting
single_word
命令行:printf '%s\n' "$a" "$b"
被空格分隔为四个标记(单词):
一:printf
,二:'%s\n'
三:"$a"
和四:"$b"
。
如果未引用同一命令行:
$ printf '%s\n' $a $b
word
splitting
single_word
然后,第三个标记(单词):word splitting
会进行单词拆分,并变成两个标记(单词):word
和splitting
(因为IFS默认包含空格)。
第四个令牌也要进行分词(因为未引用),但由于没有IFS字符,因此仍作为一个令牌(单词)保留。
请注意,“单词拆分”通常与globing有关,因为两者均适用于未加引号的扩展名。可以通过该命令关闭连接,set -f
并且可以通过使用引号来避免单词拆分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句