从 cli 运行 PHP 脚本为:
$ php test.php {a=1,b=2,c=3}
结果$argv
结构为:
[
0 => test.php
1 => a=1
2 => b=2
3 => c=3
]
问题。
- 在这种情况下的预期含义是
{ ... }
什么? - 它是 PHP 的事情还是 bash 的事情?
- 是否有描述这种行为的在线文档?(是的,我已经用谷歌搜索了 - 没有成功)
谢谢!
从 cli 运行 PHP 脚本为:
$ php test.php {a=1,b=2,c=3}
结果$argv
结构为:
[
0 => test.php
1 => a=1
2 => b=2
3 => c=3
]
问题。
{ ... }
什么?谢谢!
大括号扩展是一种可以生成任意字符串的机制。这种机制类似于文件名扩展,但生成的文件名不需要存在。要进行大括号扩展的模式采用可选preamble的形式,后跟一系列逗号分隔的字符串或一对大括号之间的序列表达式,然后是可选的postscript。序言作为前缀添加到大括号中包含的每个字符串,然后将后记附加到每个结果字符串,从左到右扩展。
在您的情况下,没有序言或后记,因此它只是扩展到列表中的每个元素。
您可以使用以下命令查看结果echo
:
echo {a=1,b=2,c=3}
哪个输出:
a=1 b=2 c=3
如果您要使用序言和后记:
echo before{a=1,b=2,c=3}after
你得到:
beforea=1after beforeb=2after beforec=3after
我通常在尝试将文件复制或移动到备份时使用它:
cp somefile.txt{,.bak}
扩展为:
cp somefile.txt somefile.txt.bak
{}
在 中表示为一个对象PHP
,当var_dump
一个类的实例时,你会看到它被{}
. 我发现有一个文档描述了如何使用$argv
https://www.php.net/manual/en/reserved.variables.argv.php