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

时间:2013-10-02 22:13:32

标签: linux bash awk

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

#! /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”没有被解释,因为它在技术上介于单引号之间,我无法弄清楚如何阻止它这样做。

感谢。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

要打印目录中文件的重复次数,可以使用以下命令:

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

答案 2 :(得分:0)

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