何かのようなもの
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
ディレクトリ名にスペースが含まれている可能性が高い場合 (OSX がサポートされているかどうかは不明-print0
)、試してみてください
find . -name 'Adobe' -print0 \
| while read x ; do
if ....
参考までに、bash での割り当ては次のように行われます ( の前後にスペースはありません=
)。
apps=$(ls | grep Adobe)
状況に応じて、リスト内の各単語を個別のトークンとして残す"$apps"
、または単に plainを使用する必要があります。$apps
(ファイル名またはパスにスペースがある場合、1 つのパス/ファイルが 2 語になり、問題が発生します)。使用する配列表記もあり、(要素の数)、(すべての要素)、 (最初の要素) のapps=( $(ls | grep Adobe) )
ような変数を使用することが可能です。${#apps[@]}
${apps[@]}
${apps[1]},
また、あなたの意図が何のためにあるのかは明らかではありませんadd .bak extension
。私の最善の推測は、私の 2 番目のオプションです/bin/mv ... .bak
。
IHTH。