Linux Bash程序在if语句之后挂起
我是bash新手,我有一个程序,可以对csv文件进行排序,然后根据输入打印或保存。但是在保存if语句之后,它会一直挂在上面Linux Bash程序在if语句之后挂起,linux,bash,Linux,Bash,我是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工作?排序正在等待数据。您是否将CSV文件重定向到脚本中?或者您实际上是想通过
if [ "$1" = "-f" ]; then
sort -r -t, -k5 $1>sorted.csv
elif [ "$2" = "" ]; then
sort -r -t, -k5 $1
fi
它是否应该对文件$1进行排序并将其保存到sorted.csv?elif工作?
排序
正在等待数据。您是否将CSV文件重定向到脚本中?或者您实际上是想通过“$2”
测试?排序
正在等待数据。您是否将CSV文件重定向到脚本中?或者您实际上是想通过“$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
第一个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
echo语句是你最好的朋友echo语句是你最好的朋友。。。或者排序“$2”
而不是$1
(也应该正确地用双引号引起来)?$1
和
之间缺少空格导致$1
被视为重定向的文件描述符,而不是排序的参数。因此,它正在等待标准输入。。。。或者排序“$2”
而不是$1
(也应该正确地用双引号引起来)?$1
和
之间缺少空格导致$1
被视为重定向的文件描述符,而不是排序的参数。结果,它正在等待标准输入。作为文件名的变量插值基本上应该总是双引号。您需要贯穿始终的“$1”
pro$1
,同上“$2”
。作为文件名的变量插值基本上应该始终是双引号。您需要整个“$1”
pro$1
,同上“$2”
。