Kal*_*Zen 3 bash awk loops while-loop do-while
我有以下内容,output.txt它只包含 2 列来演示:
Test1 Test1-IS-OK
Test2 Test2-IS-NOT
Test3 Test3-IS-OK
Test4 Test4-IS-OK
Test5 Test5-IS-NOT
Run Code Online (Sandbox Code Playgroud)
然后我的 bash 脚本有以下代码:
#!/bin/bash
output="output.txt"
a=$(awk '{ print $1 }' $output)
b=$(awk '{ print $2 }' $output)
while IFS=" " read -r $a $b
do
echo "LOG: $a and $b"
done < "$output"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
./test.sh: line 13: read: `Test1-IS-OK': not a valid identifier
Run Code Online (Sandbox Code Playgroud)
我需要有这样的输出
LOG: Test1 and Test1-IS-OK
LOG: Test2 and Test2-IS-NOT
LOG: Test3 and Test3-IS-OK
LOG: Test4 and Test4-IS-OK
LOG: Test5 and Test5-IS-NOT
Run Code Online (Sandbox Code Playgroud)
但是代码不起作用。从文件中循环这 2 列的最佳方法是什么?有没有更简单的方法?
最好是避免 bash 并在 awk 中完全做到这一点。在 awk 中,它很简单:
awk '{print "LOG:", $1, "and", $2}' file
Run Code Online (Sandbox Code Playgroud)
LOG: Test1 and Test1-IS-OK
LOG: Test2 and Test2-IS-NOT
LOG: Test3 and Test3-IS-OK
LOG: Test4 and Test4-IS-OK
LOG: Test5 and Test5-IS-NOT
Run Code Online (Sandbox Code Playgroud)