bash程序读取数组

Dna*_*iel 1 linux arrays bash

我试图运行一个bash程序,它接受一些命令行输入名称,然后将一个数组作为命令行输入.

也就是说,

#!/bin/bash
name1=$1
name2=$2
my_array_input=("dog" "cat" "lion")
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我将name1和name2作为输入,并在脚本中声明和设置my_array_input.

在我的真实脚本中,我还想将name1和name2作为$ 1和$ 2,但我也希望能够从用户那里获取一个(未知大小/可变大小)my_array_input.用户可以输入不同长度的数组,并根据自己的意愿输入自己的动物名称......

请注意,所有输入都应该是命令行输入.

有没有使用bash脚本执行此操作的技巧?

谢谢!

rua*_*akh 5

Bash脚本(或类Unix操作系统中的任何程序)的参数只是一个字符串列表,因此无法完全按照您的描述进行操作.

但是,您可以设置name1第一个参数,name2在第二个参数,my_array_input所有后续参数:

#!/bin/bash
name1="$1"
name2="$2"
my_array_input=("${@:3}")
Run Code Online (Sandbox Code Playgroud)

如果参数在上述脚本是foo bar dog cat lion,那么name1将是foo,name2barmy_array_input将所述阵列(dog cat lion).