【发布时间】:2026-01-03 22:30:01
【问题描述】:
我忽略了这段代码有什么问题?
#! /bin/bash
File1=$1
for (( j=1; j<=3; j++ ))
{
output=$(`awk -F; 'NR=='$j'{print $3}' "${File1}"`)
echo ${output}
}
File1 看起来像这样:
Char1;2;3;89
char2;9;6;66
char5;3;77;8
我想在循环字段 3 的每一行上提取
所以结果将是
3
6
7
【问题讨论】:
-
去掉单引号并转义分号:
output=$(awk -F\; 'NR=='$j'{print $3}' "${File1}"). -
你试过了吗?
-
通过阅读您的代码,我无法理解您想要做什么。您只想提取前 3 行吗?如果您已经使用过 awk,为什么还需要 shell for 循环?
-
你有反引号 inside
$( ... )。那是错误的。这将尝试执行从内部反引号返回的内容。 -
@gniourf_gniourf YES 但它给了我这个日志错误:./script.sh: line 8: NR==1{print $3}: command not found 你知道吗?