shell 是否有一个bash函数,用于根据最终用户提供的读取来确定变量的数量

omtl5h9j  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(104)

我目前正在开发一个小的命令行界面工具,不太熟悉bash的人可以从他们的计算机上运行它。为了保密,我修改了内容,但是功能保持不变。
用户将得到一个提示,然后用户将用他们的答案进行响应。由此,我将得到两个信息:
1.他们的React现在作为单独的变量2.我现在已经给出的变量的数量:该值现在也是一个变量
我当前的脚本如下

echo List your favorite car manufacturers 
read $car1 $car2 $car3 #end user can list as many as they wish

for n in {1..$numberofmanufacturers} #finding the number of 
variables/manufactures is my second question

do
echo car$n
done

我希望允许用户输入任意数量的汽车制造商(1=〈n),但是我需要每个制造商都是不同的变量。我还需要能够自动计算制造商的数量,并将该值作为自己的新变量。
我是否更适合让最终用户创建一个.txt文件,在其中列出(垂直)他们的制造商,从而迫使我使用wc -l来确定制造商的数量?
我很感激你事先提供的帮助。

f4t66c6m

f4t66c6m1#

正如我在注解中所说的,无论何时您希望使用多个动态创建的变量,您都应该检查是否有更好的数据结构适合您的用例;而且几乎在所有情况下都是这样。下面是使用bash数组的实现。它以三种不同的方式输出输入数组的内容。

echo List your favorite car manufacturers 
# read in an array, split on spaces
read -a cars

echo Looping over array values
for car in "${cars[@]}"
do
  echo $car
done

echo Looping over array indices
for i in ${!cars[@]}
do
  echo ${cars[$i]}
done

echo Looping from 0 to length-1
let numcars=${#cars[@]}
for i in $(seq 0 $((numcars-1)))
do
  echo ${cars[$i]}
done

相关问题