我在从标准输出中形成bash数组时遇到问题.我把它归结为这个最小的例子:
~$ a=($(echo '1 2 3 "foo bar"'))
~$ echo ${a[0]}
1
~$ echo ${a[1]}
2
~$ echo ${a[2]}
3
~$ echo ${a[3]}
"foo
~$ echo ${a[4]}
bar"
Run Code Online (Sandbox Code Playgroud)
我相信所发生的事情是,"foo和bar"被认为是标准输出单独项目,但目标是巩固这些物品放入一个数组.
显然,我可以编写一个小循环来将这些术语合并为一个,但我想知道有一个更优雅的解决方案吗?
编辑:echo '1 2 3 "foo bar"'在我的代码中代替的是相当复杂的,但关键是我需要从这个表单的一些未知标准输出形成一个数组.
假设我认为我安装了SVN.我运行命令,我得到以下输出:
aoneill@aoneill-Laptop:~/Documents$ svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion
Run Code Online (Sandbox Code Playgroud)
我的问题是:我可以改变输出,或者在这样的情况下,说出类似下面的内容,并在最后提示?
aoneill@aoneill-Laptop:~/Documents$ svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion
Install the package? [y/n]
Run Code Online (Sandbox Code Playgroud)
谢谢!它会使包装处理更好!
我有一个定义如下的数组:
$bar = array(
'/' => 'foo'
);
Run Code Online (Sandbox Code Playgroud)
我可以将它转换为一个类(使用$baz = (object) $bar),我没有得到任何错误.$baz包含以下内容:(通过var_dump)
object(stdClass)#1 (1) {
["/"]=>
string(3) "foo"
}
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法找到一种方法来访问该/属性$baz.我以为我可以使用$baz -> /;,但显然该语句存在语法问题.
谢谢您的帮助!