因此,在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。
答案 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