1

フォルダー内のファイルが最後に更新された時間を報告するスクリプトを作成しようとしています。フォルダーは毎日作成されます。例: /home/user/todaysdate。内部には、何かを作成したときに作成されるtodaysdateフォルダーが存在します。たとえば、fol1 fol2 fol3 があります。各フォルダーにログインし、最後に作成されたファイルの時刻を表示するスクリプトを取得しようとしています。

#!/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}

上記のコマンドは私の時間を与えてくれます。サーバーとlist.txtで作成された変数にsshするにはwhileループが必要だと思いますが、うまくいきません。何か助けはありますか?

4

1 に答える 1

1

list.txt がスペースで区切られている場合 (例: "fol1 fol2 fol3")、bash for/in ループを試してください:

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

list.txt が改行で区切られている場合は、bash while ループを試してください。

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

bash ループの詳細については、このページを参照してください。

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

于 2013-04-05T03:26:23.433 に答える