首页 > 解决方案 > 将 bash 文件的多余参数导出到另一个文本文件

问题描述

我正在尝试编写一个通常需要 3 个参数的 bash 文件。当给出的参数超过 3 个时,会调用一个额外的条件。此条件应将额外的参数导出到名为excess 的文本文件中。这是我到目前为止的代码:

if [ $# -gt 3]; then
   for ((i = 4; i <= $#; i++)); do
       echo "$i" >> "excess.txt"    
   done
fi

循环不是导出实际参数,而是将数字 4,5,6... 导出到文本文件。

我不太清楚为什么会发生这种情况,因为我在 echo 语句中的“i”之前使用了美元符号。

标签: bash

解决方案


您应该使用间接扩展${!}

for ((i = 4; i <= $#; i++)); do
    echo "${!i}" >> "excess.txt"
done

另外,你可以做

shift 3; echo "$@" >> execss.txt

推荐阅读