Existem alguns problemas com sua abordagem:
-
(A B)
só pode ser usado para atribuição de matriz (por exemplo,C=(A B)
), não criando uma operação imediata.No entanto, para não requer um array, então
for C in A B
funcionará bem. -
A sintaxe apropriada para
for
loops éfor ... in ...; do ..., done
.
Este comando deve funcionar bem:
for C in release debug; do for T in iphoneos iphonesimulator; do cp build/$C-$T/*.a sdk/$C-$T; done; done
Note que isto requer que as pastas apropriadas em sdk já existam.
No entanto, como o @Robertof já mostrou, existem maneiras de arquivar isso sem nenhum loop.
Se você quiser copiar todos os arquivos dos diretórios (ou seja, *.a
corresponde a todos eles), você pode usar o comando ou esta pequena simplificação:
cp -R build/{release,debug}-iphone{os,simulator} sdk
Como funciona:
-
O shell executará expansão de brace , então o comando que será realmente executado é este:
cp -r build/release-iphoneos build/release-iphonesimulator build/debug-iphoneos build/debug-iphonesimulator sdk
-
A opção
-r
torna o cp recursivo, ou seja, copiará diretórios inteiros em vez de apenas arquivos.
Se você deseja copiar somente os arquivos ' .a (ou seja, há outros), é melhor usar esses comandos:
cd build
cp --parents {release,debug}-iphone{os,simulator}/*.a ../sdk
Como funciona:
-
Novamente, a expansão de chaves é executada como antes.
-
A opção
--parents
faz com que cp use o nome completo do arquivo de origem para o destino, ou seja, os arquivos derelease-iphoneos
serão copiados para../sdk/release-iphoneos
.
Finalmente, uma palavra de conselho:
Ao experimentar com comandos cp , use sempre a opção -i
. Isso torna o cp interativo, o que significa que ele será avisado antes de sobrescrever qualquer coisa.