Bash脚本:用除第一个参数外的所有参数填充数组



我有一个脚本,我给它的参数。第一个参数是字符串,其他参数是数字。我想检查从第二个和然后的参数是否为数字(字符串除外)。

k="$1"
shift
declare -i x
x=($*)
for i in ${x[@]}
do
if [ $i == 0 ]
then
echo "give dec or incr and numbers only"
exit 1
fi

done

,但它不起作用。它接受所有的参数。Declare -i x表示x只接受数字,如果不接受则返回0。我想让x数组从第二个参数开始

修改后的脚本

  • 将其余命令行项捕获到数组中;
  • 报告数组大小;和
  • 报告分配给单个数组的值元素

脚本如下:

#!/bin/bash
k="$1"
shift
declare -i x
# Assigning values from command line
x=( "$@" )     ### edited assignment command
echo "Assigned array items:  ${x[@]}"
size=${#x[*]}
echo "Array size = ${size}"
i=0
max=$((${size}-1))
while [ $i -le ${max} ]
do
echo "x[$i] = ${x[$(expr $i )]}"
((i+=1))
done

注意没有必要在输入数据为已知类型的脚本中使用declare(即输入的位置2-6)。大多数程序以预定义的已知格式处理数据。即使不使用输入,它们通常也会检查"空值"。条件。

"declare"仅用于

  • 输入类型为未知类型,AND
  • 无效类型的后果将在使用无效数据来包含操作路径(例如rm -rf ${variable})方面产生严重影响,或者将导致操作/损坏不正确的分区(例如在使用fsck或parted修改/修复的半自动过程中${partition} == 0)。

相关内容

  • 没有找到相关文章

最新更新