【问题标题】:in unix FOR LOOP showing syntax error (error token is "<")在 unix FOR LOOP 中显示语法错误(错误标记为“<”)
【发布时间】:2018-07-13 15:31:49
【问题描述】:

我想比较文件中两个标题之间的数据。

通过第一个awk 命令,我获取了temp.txt 中的标题。 $z 保存文件中标题的数量。现在我使用for-loop 将两个连续的标题与awk 命令进行比较,但显示以下错误..

第 5 行:((: i<:>

#!/bin/bash
awk '/^[A-Z]+[:_]/ {print $1}' abc.txt > temp.txt
z= wc -l temp.txt | cut -d " " -f1
echo $z
for((i=1;i<$z;i++))
do
A=$(awk "NR=='$i'" ref.txt )

B=$(awk "NR=='$i+1'" ref.txt )

C=echo$(sed -n -e /$A/,/$B/p /home/aniruddh/abc.txt > temp.txt)
awk '/[A-Z]+-[0-9]/ {print $1}' temp.txt
echo
done

【问题讨论】:

标签: bash shell loops unix for-loop


【解决方案1】:

用$(...)括住命令

z=$(wc -l temp.txt | cut -d " " -f1)

【讨论】:

  • 请避免使用老式的反引号并使用 $(...) 代替。最后一个易于嵌套,更易于阅读,与字体无关。
  • 或z=$(wc -l &lt;temp.txt)
  • 我已经删除了使用反引号的建议。如果你看到它们就知道它们的含义是一回事,但建议在以前不知道它们的地方使用它们是另一回事。
  • 脚本有大量不相关的错误,至少你应该提到。
【解决方案2】:

由于第 5 行出现错误,因此请在脚本中更改以下内容:

z=$(wc -l temp.txt | cut -d " " -f1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2015-05-28
    相关资源
    最近更新 更多