喜歡的東西
for x in $(ls | grep Adobe) ; do
if [[ -d "${x}"/"${x}".app/contents/frameworks/amtlib.framwork ]] ; then
# add .bak extension # //amtlib.framework.bak
#? mkdir "${x}"/"${x}".app/contents/frameworks/amtlib.framwork.bak
#? /bin/mv "${x}"/"${x}".app/contents/frameworks/amtlib.framwork {x}/${x}.app/contents/frameworks/amtlib.framwork.bak
/bin/cp ~/Downloads/.../amtlib.framwork to "${x}"/"${x}".app/contents/frameworks/
else
: # ??? what do you want to do if there's not
fi
done # loop
如果你很可能有空格的dirnames中,(不知道OSX支持-print0
),但儘量
find . -name 'Adobe' -print0 \
| while read x ; do
if ....
作爲一個僅供參考,分配在bash (=
周圍沒有空格):
apps=$(ls | grep Adobe)
Depe根據這種情況,您需要使用"$apps"
,或者僅僅使用$apps
,這會將列表中的每個詞作爲單獨的令牌。 (如果文件名或路徑中有空格,則1個路徑/文件現在是2個單詞,並且會導致問題)。還有陣列符號使用,apps=($(ls | grep Adobe))
,並使用像${#apps[@]}
(元素數),${apps[@]}
(所有元素),${apps[1]},
(第一元素)是可能的變種。
此外,目前尚不清楚您與add .bak extension
的目的是什麼。我最好的猜測是我的第二個選擇,/bin/mv ... .bak
。 IHD。
IHTH。
只是一個評論:**不解析'ls' **的輸出。改用globs:'for * in * Adobe *;做' –
好,點了。我承諾! ;-) 祝你們好運。 – shellter