我是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工作?
答案 0 :(得分:5)
sort
正在等待数据。您是否将CSV文件重定向到脚本中?或者你的意思是将"$2"
传递给test
?
答案 1 :(得分:2)
第一个if测试查看参数$ 1并在该参数为'-f'时执行某些操作。有些东西在'sort'调用中使用相同的参数,评估为:
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