bash脚本-case语句未正确计算字符串(值)
我需要帮助找出为什么我的bash脚本-case语句未正确计算字符串(值),bash,shell,unix,case,Bash,Shell,Unix,Case,我需要帮助找出为什么我的case语句没有正确评估我列表中的前两个值(访客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($colu
case
语句没有正确评估我列表中的前两个值(访客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"
获取:
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
期望:
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)个值,但到目前为止还不能。感谢您的帮助。
case
与for
不同,它不会将列
解释为$column
(因为for
需要知道要分配给的变量的名称,而case
需要知道要比较的值)
你可能想要
case "$column" in
你的意思是…中的“$column”一词吗?可能是…,就这么简单吗?我试试看。感谢您,自动检测此问题和其他常见问题。你可以考虑在你的编辑器中安装它。另一个建议:不是所有的<代码> LICONUT/<代码>和<代码>计数器< /代码>的东西,只要在循环之后放“<代码>回声”……作为“M55SUM”命令,那么它运行的最后一个值是“代码> $列< /代码>。@ Noabe:实际上,我把它取回;那不行
read
在读取时将列
设置为每一行,但在最后一行之后有一个最后的read
,它读取文件的结尾并将列
设置为空。但是如果您在循环中添加lastcolumn=$column
,那么在循环之后,column
变量中将保留最后一个实际列,您可以使用它来打印“…as md5sum”。耶!非常感谢你。快速修复肯定。谢谢你的帮助!