1

このスクリプトを取得してデータを表示し、ファイルにエクスポートしてから、ターミナルに終了しようとしています。スクリプトは正常に実行されますが、終了しません。毎回 Ctrl+c を押さなければなりません。コマンド kill 、 return 、および exit を試しましたが、成功しませんでした。アドバイスをいただければ幸いです。それは私を夢中にさせています。

#!/bin/bash
#Script that displays data about current directory.
echo

echo -n "Number of subdirectories in this directory: "
find . -type d | wc -l
sleep 2
echo

echo -n "List of files in the current directory: "
ls -1 | wc -l
sleep 2
echo

echo "List of zero-length files in current directory: "
find -size 0
sleep 2
echo

echo "Used storage space of the current directory is: "
du -sh
sleep 2
echo

echo -n "Data output of 'dirchk.sh' is in this directory called directory-check.results."

./dirchk.sh > directory-check.result
4

3 に答える 3

0

現在のスクリプトが の場合dirchk.sh、無限ループで実行されます。dirchk.shruns dirchk.sh、これは実行されdirchk.shます ... これを回避するには、次のteeコマンドを使用します。

#!/bin/bash
#Script that displays data about current directory.
echo

echo -n "Number of subdirectories in this directory: "
(find . -type d | wc -l 2>&1) | tee directory-check.result
sleep 2
echo

echo -n "List of files in the current directory: "
(ls -1 | wc -l 2>&1) | tee -a directory-check.result
sleep 2
echo

echo "List of zero-length files in current directory: "
(find . -size 0 2>&1) | tee -a directory-check.result
sleep 2
echo

echo "Used storage space of the current directory is: "
(du -sh 2>&1) | tee -a directory-check.result
sleep 2
echo

echo -n "Data output of 'dirchk.sh' is in this directory called directory-check.results."
于 2013-04-17T19:56:00.937 に答える
-1

編集:わかりました、私は要点を得ました。エラーはスクリプトの最後にあり、終了できません。このような関数を使用することをお勧めできますか?

#!/bin/bash
#Script that displays data about current directory.
echo
testing () {
echo "Number of subdirectories in this directory:  $(find . -type d | wc -l)"
sleep 2
echo

echo "List of files in the current directory: $(ls -1 | wc -l)"
sleep 2
echo

echo "List of zero-length files in current directory: $(find -size 0)"
sleep 2
echo

echo "Used storage space of the current directory is: $(du -sh)"
sleep 2
echo
}

testing 2>&1 |tee directory-check.results && echo  "Data output of dirchk.sh is in this directory called directory-check.results." 
exit
于 2014-04-16T10:08:55.193 に答える