bash:while循环中的语法错误
因此,在bash脚本中,有一个while循环,从一些pippelined sort命令的输出中读取行。我得到一个错误:第13行:意外标记“完成”附近的语法错误 第13行是最后一行,这里是“完成”和管道。我的剧本:bash:while循环中的语法错误,bash,input,while-loop,syntax,command,Bash,Input,While Loop,Syntax,Command,因此,在bash脚本中,有一个while循环,从一些pippelined sort命令的输出中读取行。我得到一个错误:第13行:意外标记“完成”附近的语法错误 第13行是最后一行,这里是“完成”和管道。我的剧本: #!/bin/bash while read -a line; do if [[ ${line[2]} < $1 ]]; then continue fi if [[ $2 != -MM ]]; then if [[ ${line[3]} = N ]
#!/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)
#/bin/bash
读的时候——一行;做
如果[${line[2]}<$1]];然后
持续
fi
如果[$2!=-MM]];然后
如果[${line[3]}=N]];然后
持续
fi
fi
echo-n“${line[0]}”
echo${line[1]}
完成<您可以不使用()
像done
我会首先尝试将日期写入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}"
#/usr/bin/env bash
TMPF=“/tmp/tmp file.dat”
sort-b房间| sort-sk2 | sort-sk4 | sort-sk3>“${TMPF}”
而IFS=读取-r行;做
如果[${line[2]}-ge$1]&&[$2!=-MM]&&[${line[3]}=N]];然后
echo-n“${line[0]}”
echo${line[1]}
fi
已完成<“${TMPF}”
这做了一些完全不同的事情。语法在我看来还行(对于bash,而不是其他shell,所以不要使用sh scriptname
运行它)。脚本是否可能有DOS/Windows行结尾?