我的脚本(称为test.sh)如下:
#!/bin/bash
for i in "cat myfile | awk -F',' '{print $1}'"; do
.....
我的问题是我的脚本接收参数(./tesh.sh arg1 arg2
,而'{print $1}'
接受脚本参数(arg1
)而不是awk结果,我该如何解决呢?
答案 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