Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash脚本-case语句未正确计算字符串(值)_Bash_Shell_Unix_Case - Fatal编程技术网

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”。耶!非常感谢你。快速修复肯定。谢谢你的帮助!