Shell 比较从csv文件读取的字符串
我试图在if条件下比较从csv文件读取的字符串。下面是我编写的示例代码:Shell 比较从csv文件读取的字符串,shell,unix,Shell,Unix,我试图在if条件下比较从csv文件读取的字符串。下面是我编写的示例代码: export IFS="~" while read a b c do echo "line Num:$a" if [ "$b"=="sat" ];then echo "Its saturday" echo $c elif [ "$b"=="sun" ];then echo "Its sunday" echo $c else
export IFS="~"
while read a b c
do
echo "line Num:$a"
if [ "$b"=="sat" ];then
echo "Its saturday"
echo $c
elif [ "$b"=="sun" ];then
echo "Its sunday"
echo $c
else
echo "Its weekday"
echo $c
fi
done < "$1"
下面是我得到的输出:
line Num:1
Its saturday
enjoy
line Num:2
Its saturday
enjoy
line Num:3
Its saturday
enjoy
line Num:4
Its saturday
enjoy
line Num:5
Its saturday
enjoy
需要以下输出:
line Num:1
Its saturday
enjoy
line Num:2
Its sunday
enjoy
line Num:3
Its weekday
work
line Num:4
Its weekday
work
line Num:5
Its sunday
enjoy
你知道如何做到这一点吗?试试看
export IFS="~"
while read a b c
do
echo "line Num:$a"
if [ "$b" = "sat" ];then
echo "Its saturday"
echo $c
elif [ "$b" = "sun" ];then
echo "Its sunday"
echo $c
else
echo "Its weekday"
echo $c
fi
done < "$1"
谢谢你缩进代码!你用的是哪个外壳?猛击?Bourne shell?带结尾的csv文件?尝试使用
dos2unix
或tr-d“\r”
转换您的csv文件。也许您可以将done<“$1”
更改为done<
export IFS="~"
while read a b c
do
echo "line Num:$a"
if [ "$b" = "sat" ];then
echo "Its saturday"
echo $c
elif [ "$b" = "sun" ];then
echo "Its sunday"
echo $c
else
echo "Its weekday"
echo $c
fi
done < "$1"
case "$b" in
sat) echo "It's saturday" ;;
sun) echo "It's sunday" ;;
*) echo "It's weekday" ;;
esac
echo $c