2013-10-02 37 views
0

我想在一个文本行的每个项目运行命令:在awk命令使用BASH整型变量

#! /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 

但是当我运行它,它只是打印出的整条生产线文件条目与循环的每一次迭代。我认为这是因为“我”没有被解释,因为它在技术上处于单引号之间,我无法弄清楚如何防止这样做。

谢谢。

+1

你想做什么?打印出0到$范围内的数字,$范围时间? – Joni

+0

我试图打印出目录中的每个文件名,范围是目录中文件的数量,所以我想打印出文件名$ range times。 – user2840488

+2

就是这样?为什么使用'paste'和'awk'使其复杂化? – Joni

回答

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

您可以将变量传递给AWK与-v说法像:

d=$(ls /home/user/Pictures/Wallpapers | paste -sd " " | awk -v var="$i" -F' ' '{ print var }') 
0
for f in /home/user/Pictures/Wallpapers/*; do echo $f; done