我是 bash 新手,我有一个程序可以对 csv 文件进行排序,然后根据输入打印或保存它。但它在 if 语句之后一直挂在它上面以进行保存。
if [ "$1" = "-f" ]; then
sort -r -t, -k5 $1>sorted.csv
elif [ "$2" = "" ]; then
sort -r -t, -k5 $1
fi
它不应该对文件 $1 进行排序并将其保存到 sorted.csv 吗?elif 工作?
sort
正在等待数据。您是否将 CSV 文件重定向到脚本中?还是您实际上是要传递"$2"
给test
?
第一个 if 测试查看参数 $1 并在该参数为“-f”时执行某些操作。某些东西在“排序”调用中使用相同的参数,其计算结果为:
sort -r -t, -k5 -f > sorted.csv
这将挂起,因为您必须将要排序并保存在 sorted.csv 中的文件内容通过管道传输到脚本中。我想当它挂起时,您总是可以只输入 csv 文件内容并使用 CTRL-D 完成 :-)。'-f' 会在我的机器上进行折叠排序。
如果您的意思是传递一个文件名:
if [ $# -gt 1 ]
then
if [ $1 = "-f" ]
then
# assume $2 not a control switch for sort but a file name
sort -r -t, -k5 $2 > sorted.csv
fi
fi
if [ $# -eq 1 ]
then
# assume $1 not a control switch for sort but a file name
sort -r -t, -k5 $1
fi