2013-04-05 33 views
1

我正在嘗試編寫一個腳本,該腳本會報告文件夾中上次更新文件的時間。這些文件夾是每天創建的例如:/ home/user/todaysdate。在創建somethng時創建的todaysdate文件夾exsist中。舉例來說,我們將會有以下的例子。我試圖讓腳本登錄到每個文件夾並顯示最後創建的文件的時間。Bash腳本:如何使用列表中的變量

#!/bin/bash 
folder=`date +%Y%m%d` 
ssh -q server "cd /home/user/$folder/ ; bash -c "ls -la | uniq" > list.txt 

這將創建一個不同的文件夾列表。現在我需要ssh進入每個文件夾,這是我卡住的地方。 的LIST.TXT的輸出將是: fol1 fol2 fol3

ssh -q server "bash -c \"ls -ltr /home/user/$folder/<Need List Variable Here> | tail -1\"" awk '{print $8} 

上面的命令給我我的時間。我相信我需要一個while循環ssh進入服務器,並在list.txt中創建的變量,但我無法工作。任何幫助?

+0

無視使用for循環修復它。 '用於$(cat list.txt)中的LINE 做' – user2247298 2013-04-05 03:00:07

回答

1

如果LIST.TXT被空間分離的(例如, 「fol1 fol2 fol3」)嘗試在環路/一個bash:

for folder in $(cat list.txt); 
do 
    echo $folder; 
done 

如果LIST.TXT是換行分隔然後嘗試while循環一個bash:

cat list.txt | while read folder; 
do 
    echo $folder; 
done 

有關bash循環的更多信息,請參見此頁面。

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

+0

不幸的是,從文件或$(ls)中讀取都充滿了危險。文件名可以有特殊的字符,真正吸引你。 http://mywiki.wooledge.org/ParsingLs – 2014-11-06 21:03:11