[英]Using a BASH integer variable in an awk command
我試圖在一行文本中的每個條目上運行一個命令:
#! /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”沒有被解釋,因為它在單引號之間,因此我無法弄清楚如何防止這種情況發生。
謝謝。
您可以使用-v
參數將變量傳遞給awk,如下所示:
d=$(ls /home/user/Pictures/Wallpapers | paste -sd " " | awk -v var="$i" -F' ' '{ print var }')
要打印目錄中文件的名稱,重復進行多次的打印,可以使用:
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
for f in /home/user/Pictures/Wallpapers/*; do echo $f; done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.