Ruby 将YAML数组转换为Bash数组

Ruby 将YAML数组转换为Bash数组,ruby,bash,yaml,Ruby,Bash,Yaml,我有一个YAML数组: myarray: - PHP - Perl - Python 如何使用ruby将其转换为bash数组 Arr[0]='PHP' Arr[1]='Perl' Arr[2]='Python' 我不确定这是否是你想要的 在ruby中,解析yaml数组并为Bash编写一个作为数组读取的输出: require 'yaml' yaml_array = <<-eos myarray: - PHP - Perl - Pyt

我有一个YAML数组:

myarray:
    - PHP
    - Perl
    - Python
如何使用ruby将其转换为bash数组

Arr[0]='PHP'
Arr[1]='Perl'
Arr[2]='Python'

我不确定这是否是你想要的

在ruby中,解析yaml数组并为Bash编写一个作为数组读取的输出:

require 'yaml'

yaml_array = <<-eos
myarray:
    - PHP
    - Perl
    - Python
eos

yaml = YAML.load(yaml_array)
print "(#{yaml["myarray"].join(' ')})"
$ cat file.yaml 
myarray:
    - PHP
    - Perl
    - Python
    - element with spaces

$ mapfile -t array < <(ruby -ryaml -e 'yaml = YAML.load(File.read(ARGV.shift)); puts yaml["myarray"].join("\n")' file.yaml)

$ for i in "${!array[@]}"; do echo "$i  ${array[i]}"; done
0  PHP
1  Perl
2  Python
3  element with spaces

我不确定这是否是你想要的

在ruby中,解析yaml数组并为Bash编写一个作为数组读取的输出:

require 'yaml'

yaml_array = <<-eos
myarray:
    - PHP
    - Perl
    - Python
eos

yaml = YAML.load(yaml_array)
print "(#{yaml["myarray"].join(' ')})"
$ cat file.yaml 
myarray:
    - PHP
    - Perl
    - Python
    - element with spaces

$ mapfile -t array < <(ruby -ryaml -e 'yaml = YAML.load(File.read(ARGV.shift)); puts yaml["myarray"].join("\n")' file.yaml)

$ for i in "${!array[@]}"; do echo "$i  ${array[i]}"; done
0  PHP
1  Perl
2  Python
3  element with spaces

bash
mapfile
命令用于将stdin行转换为数组:

require 'yaml'

yaml_array = <<-eos
myarray:
    - PHP
    - Perl
    - Python
eos

yaml = YAML.load(yaml_array)
print "(#{yaml["myarray"].join(' ')})"
$ cat file.yaml 
myarray:
    - PHP
    - Perl
    - Python
    - element with spaces

$ mapfile -t array < <(ruby -ryaml -e 'yaml = YAML.load(File.read(ARGV.shift)); puts yaml["myarray"].join("\n")' file.yaml)

$ for i in "${!array[@]}"; do echo "$i  ${array[i]}"; done
0  PHP
1  Perl
2  Python
3  element with spaces
$cat file.yaml
myarray:
-PHP
-Perl
-蟒蛇
-带空格的元素

$mapfile-t arraymapfile
命令用于将stdin行转换为数组:

require 'yaml'

yaml_array = <<-eos
myarray:
    - PHP
    - Perl
    - Python
eos

yaml = YAML.load(yaml_array)
print "(#{yaml["myarray"].join(' ')})"
$ cat file.yaml 
myarray:
    - PHP
    - Perl
    - Python
    - element with spaces

$ mapfile -t array < <(ruby -ryaml -e 'yaml = YAML.load(File.read(ARGV.shift)); puts yaml["myarray"].join("\n")' file.yaml)

$ for i in "${!array[@]}"; do echo "$i  ${array[i]}"; done
0  PHP
1  Perl
2  Python
3  element with spaces
$cat file.yaml
myarray:
-PHP
-Perl
-蟒蛇
-带空格的元素

$mapfile-t array<您是什么意思
将其转换为bash数组
?你到底想做什么?我想从一个yaml文件中为一个流浪者盒子创建一个config.sh…你是什么意思
将它转换成bash数组
?你到底想做什么?我想从一个yaml文件为一个流浪者盒子创建一个config.sh…太棒了!这是我想要的。非常感谢这对shell来说会更安全:
print“(\”{yaml[“myarray”].join(“')}\”)”
——包含任何包含空格的元素太棒了!这是我想要的。多谢了,这对shell来说会更安全:
print”(\“{yaml[“myarray”].join(“)}\”)“
——包含任何确实包含whitespaceNIce函数但仅在bash 4+中有效的元素,不幸的是,我没有(只是警告其他人)很好的函数,但只在bash 4+中有效,不幸的是,我没有(只是警告别人)