shell将用户的输入值进行数学计算输出到命令行

img

想设计一个shell,将csv格式的文件按行切割,用户输入每个切割文件的最大行数(以万为单位),比如用户输入2,那么这个文件将以2万行为单位切割,请问怎么能做到

#!/bin/bash

# 读取CSV文件的总行数
total_lines=$(wc -l < input.csv)

# 让用户输入每个切割文件的最大行数(以万为单位)
read -p "请输入每个切割文件的最大行数(以万为单位):" max_lines

# 计算每个切割文件的最大行数
max_lines=$((max_lines * 10000))

# 切割CSV文件
split -l $max_lines -d input.csv output_

# 重命名输出文件
count=1
for file in output_*; do
    mv "$file" "output_$count.csv"
    count=$((count + 1))
done


#!/bin/bash

# CSV文件的总行数
total_lines=$(wc -l < input.csv)

# 让用户输入每个切割文件的最大行数(以万为单位)
read -p "请输入每个切割文件的最大行数(以万为单位):" max_lines

# 用户输入校验
if [[ $max_lines =~ ^0*[1-9]+$ ]];then

        # 计算每个切割文件的最大行数
        max_lines=$((max_lines * 10000))

        # 切割CSV文件
        split -l $max_lines -d input.csv output_

        # 重命名输出文件
        count=1
        for file in output_*; do
                mv "$file" "output_$count.csv"
                count=$((count + 1))
        done

else
        echo "Invalid Input" >&2
        exit 1
fi

参考了@wangshuai6707 的回答,额外加了用户输入验证。