运行awk命令并使用获取参数的脚本打印$ 1

时间:2019-01-10 12:44:08

标签: bash awk

我的脚本(称为test.sh)如下:

#!/bin/bash
for i in "cat myfile | awk -F',' '{print $1}'"; do
     .....

我的问题是我的脚本接收参数(./tesh.sh arg1 arg2,而'{print $1}'接受脚本参数(arg1)而不是awk结果,我该如何解决呢?

1 个答案:

答案 0 :(得分:3)

您最初的问题是您在双引号之间写了$1

"cat myfile | awk -F',' '{print $1}'"
如果 bash变量位于双引号字符串中,则仍将其值替换,而不考虑它们位于双引号内的单引号之间的事实。这就是将$1替换为arg1的原因。

第二个问题是您要执行命令:

cat myfile | awk -F',' '{print $1}'

但是为此,您需要使用符号$( command )`command`,但是不建议使用后者,因为嵌套很困难。

因此,您的for循环应读取以下内容:

#!/usr/bin/env bash
for i in $(awk -F ',' '{print $1}' myfile); do
   ...
done