1
我正在嘗試查找模式中的所有路徑,並且卡住了。這是目錄Shell腳本:識別模式中的所有路徑
testdir
|-- dir with spaces
| |-- subdir
| | |
| | |-subfile.sh
| |
| +-- 1.sh
| |
| +-- 2.sh
|
+-- dir1
| |
| |
| +-- file.sh
|
+-- test.sh
這種的結構的路徑模式,我有testdir/**/*
我想
什麼,我試圖讓輸出是
-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
我試過
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:無效選項」。我已經嘗試了第二種選擇 - 它將具有空格的路徑分成兩個結果。對於你爲什麼我需要這個問題 - 我試圖爲我們正在使用的API之一指定排除路徑。輸入規範使用路徑模式來確定要排除的路徑。 – Subbu
我編輯瞭解決'printf'錯誤的答案;對於那個很抱歉。你對'for'循環失敗的描述聽起來像是你沒有在循環內引用循環變量的雙引號。 – tripleee
類似於'api --call --options $(printf - 「-flag%q」) - 更多的選項'可能會讓你無法將結果保存在一個始終討厭的變量中。如果你不能再這樣做,我建議使用一個數組。有關於此的常見問題;見http://mywiki.wooledge.org/BashFAQ/050 – tripleee