Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中将参数传递给循环_Bash_Loops_Awk - Fatal编程技术网

在bash脚本中将参数传递给循环

在bash脚本中将参数传递给循环,bash,loops,awk,Bash,Loops,Awk,我认为这是一个相对简单的问题。我有一部分代码如下所示: #!/bin/bash file=$(ls -l /home/user_name/) for f in ${file}; do awk 'NR==1{print $2}' done 这个想法是这样的。在系统上有一个名为user\u name的用户。在他的主文件夹中,他有一种类型的文件,比如xxx.txt,yyy.txt。在这些文件中,有一些数据,我想将其作为第二列,这就是awk的用途。如何运行此循环,以便检查目录中的所有文件?如果

我认为这是一个相对简单的问题。我有一部分代码如下所示:

#!/bin/bash
file=$(ls -l /home/user_name/)
for f in ${file}; do
    awk 'NR==1{print $2}'
done

这个想法是这样的。在系统上有一个名为user\u name的用户。在他的主文件夹中,他有一种类型的文件,比如xxx.txt,yyy.txt。在这些文件中,有一些数据,我想将其作为第二列,这就是awk的用途。如何运行此循环,以便检查目录中的所有文件?如果我为它添加类似于awk'NR==1{print$2}'$s的内容,它只检查一个文件,其余部分则报告有错误。

将文件条目直接用于awk,并使用FNR文件NR,而不是计算所有文件的NR,因此NR==1仅用于第一个非空文件

awk 'FNR==1{print $2}' /home/user_name/*.txt

如果您有太多的文件要通过命令传递,可能会失败。需要另一种方法,如查找-exec在这种特殊情况下

您使用的是ls-l小写字母l,而不是数字1。。。即使这样,你也应该避免使用。。。尝试在/home/user_name/*.txt中使用f,然后使用awk'NR==1{print$2}'$更简单,而不是循环,只需使用一个简单的awk'FNR==1{print$2}'/home/user_name/*.txt