1
パターン内のすべてのパスを検索しようとしていますが、私は固執しています。このディレクトリの構造シェルスクリプト:パターン内のすべてのパスを確認します
testdir
|-- dir with spaces
| |-- subdir
| | |
| | |-subfile.sh
| |
| +-- 1.sh
| |
| +-- 2.sh
|
+-- dir1
| |
| |
| +-- file.sh
|
+-- test.sh
が、これは私は私が取得しようとしています
出力は
-flag testdir/dir\ with\ spaces/1.sh
-flag testdir/dir\ with\ spaces/2.sh
-flag testdir/dir\ with\ spaces/subdir
-flag testdir/dir\ with\ spaces/subdir/subfile.sh
-flag testdir/dir1
-flag testdir/dir1/file.sh
-flag testdir/test.sh
で欲しいtestdir/**/*
を持ってパスパターンです私が試したもの
pathpattern=testdir/**/*
echo $pathpattern
それは、次の
testdir/dir with spaces/1.sh testdir/dir with spaces/2.sh testdir/dir with spaces/subdir testdir/dir1/file.sh
- を印刷し、私はパスパターンのエコーをやってみましたが、それはすべてのものを返しませんでした。
- 私はまた、スペースを持つエントリを処理することを知らない。私は$ pathpatternをループしてみましたが、新しいパスとスペースを持つパスを区別することができませんでした。
のようになります。これに対応するために時間を割いていただき、ありがとうございます。印刷する最初のオプションは私にエラー "printf:-f:無効なオプション"を与えます。私はすでに2つ目のオプションを試しました。それはスペースを含むパスを2つの結果に分割します。なぜ私はこれが必要なのあなたの質問に - 私は使用しているAPIのいずれかの除外パスを指定しようとしています。入力仕様では、パスパターンを使用して除外するパスを決定します。 – Subbu
私は 'printf'エラーを修正する答えを編集しました。申し訳ありません。ループ内でループ変数を二重引用符で囲まなかったように、 'for'ループがどのように失敗したかについてのあなたの記述。 – tripleee
'api --call --options $(printf - " -flag%q ")-more options'のようなものは、おそらく結果を変数に保存しないことになります。これは常に厄介です。これをやることができない場合は、配列を使用することをお勧めします。これに関するFAQがあります。 http://mywiki.wooledge.org/BashFAQ/050を参照してください。 – tripleee