私は関数を持っています。最初の引数は、あるディレクトリへのパスが格納されている文字列です。 この文字列は、の検索結果から出力されます。タイプd。パスのリストファイル
私は現在のディレクトリ内のすべてのファイルを一覧表示する場合は、そのシンプル
for file in *; do
commands
done
しかし、文字列と、それはそれを当然のそのように扱うことはありません。
for file in "$1"; do
commands
done
は、だから私はLS
for file in `ls "$1"`; do
commands
done`
を使用することを考えた。しかし、この解決策でそれは単に私がどこにでも使用する勧告を見つけたいくつかの 研究した後、スペースでファイルを扱うことができませんを見つけるが、私は見つからないだろう。 すべてのファイル/ディレクトリ/サブディレクトリを一覧表示するだけで、ツリー全体が表示されますが、現在のディレクトリにはちょっとしたものが必要です。 私はあらゆる助けに非常に感謝します。
pushd "$1"
for file in *; do
echo "$file"
done
popd
しかし、私は、私は
これまで、伝統的にUnixはファイル名のスペースを奨励していなかった理由を知っています。ツールは、パス名にスペース(改行、バックスペース、タブ、およびその他の制御文字)がない場合に最適に動作するよう調整されています。 –
'(cd" $ 1 "|| exit 1; ...)'を使うと、何か問題が起きた場合にメインプロセスがリモートディレクトリに孤立してしまうことがないからです。 –