bash:while循环中的语法错误

时间:2018-08-12 00:43:33

标签: bash input while-loop syntax command

因此,在bash脚本中,有一个while循环,该循环从某些pippelined排序命令的开头读取行。我收到一个错误:第13行:意外令牌'done'附近的语法错误 第13行是最后一行,“完成”和管道位于此处。我的脚本:

#!/bin/bash

while read -a line; do
  if [[ ${line[2]} < $1 ]]; then
    continue
  fi
  if [[ $2 != -MM ]]; then
    if [[ ${line[3]} = N ]]; then
        continue
    fi
  fi
  echo -n "${line[0]} "
  echo ${line[1]}
  done < <(sort -b rooms | sort -sk2 | sort -sk4 | sort -sk3)

tnx。

2 个答案:

答案 0 :(得分:0)

我将首先尝试将日期写到temp,以便通过检查temp文件来查看排序的工作。然后逐行阅读。

#!/usr/bin/env bash

TMPF="/tmp/tmp-file.dat"
sort -b rooms | sort -sk2 | sort -sk4 | sort -sk3 > "${TMPF}"

while IFS= read -r line ;do
  if [[ ${line[2]} -ge $1 ]] && [[ $2 != -MM ]] && [[ ${line[3]} = N ]]; then
    echo -n "${line[0]} "
    echo ${line[1]}
  fi
done < "${TMPF}"

答案 1 :(得分:-1)

您可以不使用()

而使用

done < rooms |sort -b | sort -sk2 | sort -sk4 | sort -sk3

相关问题