簡體   English   中英

在awk命令中使用BASH整數變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM