1

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

#! /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”没有被解释,因为它在技术上位于单引号之间,我不知道如何防止它这样做。

谢谢。

4

3 回答 3

3

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

d=$(ls /home/user/Pictures/Wallpapers | paste -sd " " | awk -v var="$i" -F' ' '{ print var }')
于 2013-10-02T22:51:26.023 回答
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
于 2013-10-02T22:27:43.527 回答
0
for f in /home/user/Pictures/Wallpapers/*; do echo $f; done
于 2013-10-03T00:26:17.333 回答