Arrays 在bash中对同一循环使用数组和文件

Arrays 在bash中对同一循环使用数组和文件,arrays,bash,loops,csv,Arrays,Bash,Loops,Csv,因此,我的bash脚本有两个运行选项。在没有参数的情况下,它读取存储在固定路径中的csv文件。CSV将只包含一列数字 Numbers 1 2 3 4 脚本还可以接收逗号分隔的数字列表(例如bash script.sh1,2,3,4)。也就是说,我的脚本应该对这两种输入进行相同的处理。但是,我当前的脚本对于每个输入有两个函数 对于CSV文件,我使用传入,您可以使用此代码将CSV文件转换为BASH数组: if [[ -n "$CSV_FILE" ]]; then # read whole c

因此,我的bash脚本有两个运行选项。在没有参数的情况下,它读取存储在固定路径中的csv文件。CSV将只包含一列数字

Numbers
1
2
3
4
脚本还可以接收逗号分隔的数字列表(例如bash script.sh
1,2,3,4
)。也就是说,我的脚本应该对这两种输入进行相同的处理。但是,我当前的脚本对于每个输入有两个函数


对于CSV文件,我使用
传入,您可以使用此代码将CSV文件转换为BASH数组:

if [[ -n "$CSV_FILE" ]]; then
   # read whole csv file into an array
   numbers=( $(<"$CSV_FILE") )
   # remove first element for header
   unset numbers[0]
fi

您可以使用以下代码将CSV文件转换为BASH数组:

if [[ -n "$CSV_FILE" ]]; then
   # read whole csv file into an array
   numbers=( $(<"$CSV_FILE") )
   # remove first element for header
   unset numbers[0]
fi

或者:
numbers=($(sed 1d“$CSV_文件”)
并且不需要取消设置任何内容。这对于这个特定的非CSV输入文件是安全的。但这并不是一个普遍安全的解决方案。是的,它不是通用的。只是因为OP写的是一个单列输入文件,所以我建议这样做。对,我只需要添加警告就可以了。或者:
numbers=($(sed 1d“$CSV_file”)
并且不需要取消设置任何内容。这对于这个特定的非CSV输入文件是安全的。但这并不是一个普遍安全的解决方案。是的,它不是通用的。只是因为OP写的是一个单列输入文件,所以我建议这样做。对,我只需要添加一个警告就可以了。有意思吗。我的原始脚本有
确实
很有趣。我的原始脚本有

if [[ -n "$CSV_FILE" ]]; then
   # read whole csv file into an array
   numbers=( $(<"$CSV_FILE") )
   # remove first element for header
   unset numbers[0]
fi
for number in "${numbers[@]}"; do
    do-something $number
done