私は、引数として多数のファイルやディレクトリを受け取る単純なbash関数を記述しようとしています。そうすべき:
- ファイル名を完全に修飾します。
- それらを並べ替えます。
- 重複を削除します。
- 実際に存在するものをすべて印刷します。
- 存在しないファイルの数を返します。
私はほとんど私がやりたいことをするスクリプトを持っていますが、ソートに落ちます。現状のスクリプトの戻り値は正しいですが、出力は正しくありません(ソートされておらず、重複しています)。| sort -u
示されているようにステートメントのコメントを外すと、出力は正しくなりますが、戻り値は常にになり0
ます。
NB問題を解決するためのよりシンプルなソリューションは歓迎されますが、問題は、なぜこれが私が持っているコードで発生するのかについてです。つまり、パイプを追加すると、スクリプトが変数をインクリメントするように見えるのはなぜr
ですか?
スクリプトは次のとおりです。
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
にfor arg
。「もし「言葉で...」なら が存在しない場合、「in "$ @"」が想定されます。」-ヘルプ