我需要帮助弄清楚为什么我的case
语句没有正确评估我的列表中的前2个值(visitor_id,更新)。
这是代码:
#!/usr/local/bin/bash
file="mydatasample.out";
linecount=$(wc -l <"$file" | awk '{ print $1 }')
counter=1
while IFS='' read -r column; do
case column in
visitor_id)
echo "isnull($column|| '[|]' ||";;
updated)
echo "isnull($column::text || '[|]' ||";;
*)
echo "isnull($column::text,'[null!]') || '[|]' ||";;
esac
if [ "$counter" -eq "$linecount" ]; then
echo "isnull($column::text,'[null!]')) as md5sum"
fi
((counter++))
done <"$file"
=mydatasample.out=
visitor_id
updated
visitor_1_key
visitor_1_value
visitor_2_key
visitor_2_value
获得:
isnull(visitor_id::text,'[null!]') || '[|]' ||
isnull(updated::text,'[null!]') || '[|]' ||
isnull(visitor_1_key::text,'[null!]') || '[|]' ||
isnull(visitor_1_value::text,'[null!]') || '[|]' ||
isnull(visitor_2_key::text,'[null!]') || '[|]' ||
isnull(visitor_2_value::text,'[null!]')) as md5sum
期待:
isnull(visitor_id|| '[|]' ||
isnull(updated::::text || '[|]' ||
isnull(visitor_1_key::text,'[null!]') || '[|]' ||
isnull(visitor_1_value::text,'[null!]') || '[|]' ||
isnull(visitor_2_key::text,'[null!]') || '[|]' ||
isnull(visitor_2_value::text,'[null!]')) as md5sum
所以,它是我要评估的第一个(2)值,但到目前为止还不能。谢谢你的帮助。
答案 0 :(得分:3)
case
不同, for
并不将column
解释为$column
(因为for
需要知道要分配的变量的名称to,虽然case
需要知道比较它的值。)
你可能想要
case "$column" in