2013-10-02 34 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