我正在尝试按输入的列对包含4列的文件进行排序。无论$ field的输入是什么,下面的代码都只会根据第一列进行排序。
if (( sort ))
then
if [ $field==1 ]
then
sort -k1 $file -o $file
elif [ $field==3 ]
then
sort -k3 $file -o $file
elif [ $field==4 ]
then
sort -k4 $file -o $file
else #for field 2-- this is default
sort -k2 $file -o $file
fi
fi
答案 0 :(得分:0)
这可以更简单地完成:
if [ $field -lt 1 -o $filed -gt 4 ]; then
filed=2
fi
sort -k$field $file -o $file
<强>更新即可。如果field
包含数字,则以前的版本有效。
以下是使用内置bash测试[[
的新内容:
if [[ ! $field =~ ^[0-9]+$ || $field < 1 || $field > 4 ]]; then
filed=2
fi
sort -k$field $file -o $file
此处$field =~ '^[0-9]+$'
正在检查变量是否包含数字。