首页 > 解决方案 > 如何根据它们的编号命名 bash 脚本参数

问题描述

我有一个需要 4 个以上文件的 bash 脚本,我希望有一种方法可以为第 4 个文件之后的任何文件声明一个带有数字的变量名。

我在想的是某种while循环来声明一个基于变量的名称,该变量查看第4个文件之后的文件编号,带走3(因此它将这个新变量编号为?数的“第一个”的额外文件。

我可能没有很好地解释这一点

if [[ $# -lt 4 ]]; then
   echo "correct use is"
   echo "./UAT.sh input.inp expOut.exp actOut.act then whatever number of .bld files"
else
   input=$1
   exp=$2
   act=$3
   numFile=3
   while [[ ${numFile} -lt $# ]]; do
      (( numFile++ ))
      declare -i bldNum=${numFile}-3
      bld$bldNum=${!numFile}
   done
   echo "bld1 is ${bld1}"
   echo "bld2 is ${bld2}"
   echo "bld3 is ${bld3}"
fi

当我尝试运行这个程序时,我的 while 循环中的第三行似乎是我遇到麻烦的地方:

./newUAT.sh: line13: bld1=b1.bld: command not found

这似乎非常接近我想要的,但我需要在'b1.bld'之前有一个'$'才能分配变量。但似乎我添加了一个额外的“$”,脚本也不喜欢它,或者我添加了一个“$”,它同样不起作用。有什么帮助或想法吗?

标签: bash

解决方案


推荐阅读