繁体   English   中英

在awk命令中使用BASH整数变量

[英]Using a BASH integer variable in an awk command

我试图在一行文本中的每个条目上运行一个命令:

#! /bin/bash

range=$(ls -s /home/user/Pictures/Wallpapers | wc -l)

for (( i=0; i<$range; i++ ))
do  
   d=$(ls /home/user/Pictures/Wallpapers | paste -sd " " | awk -F' ' '{ print $i }')
echo $d
done

但是,当我运行它时,它仅在循环的每次迭代中打印出整个文件条目行。 我认为这是因为在技术上,“ i”没有被解释,因为它在单引号之间,因此我无法弄清楚如何防止这种情况发生。

谢谢。

您可以使用-v参数将变量传递给awk,如下所示:

d=$(ls /home/user/Pictures/Wallpapers | paste -sd " " | awk -v var="$i" -F' ' '{ print var }')

要打印目录中文件的名称,重复进行多次的打印,可以使用:

for x /home/user/Pictures/Wallpapers/*; do
   ls /home/user/Pictures/Wallpapers/
done

要么

for x /home/user/Pictures/Wallpapers/*; do
  for y /home/user/Pictures/Wallpapers/*; do
    echo $x
  done
done
for f in /home/user/Pictures/Wallpapers/*; do echo $f; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM