我正在尝试在一行文本中的每个条目上运行命令:
#! /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”没有被解释,因为它在技术上介于单引号之间,我无法弄清楚如何阻止它这样做。
感谢。
答案 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