Esta é a linha ofensiva. Você precisa escapar aspas ao imprimir, mas não ao executar.
_find='find "$_pwd" -maxdepth 1 -type d | wc -l'
Eu tenho o seguinte script:
#!/bin/bash
cd "/cygdrive/d/apple1/"
_pwd='pwd'
_find='find \"$_pwd\" -maxdepth 1 -type d | wc -l'
echo "command: find \"$_pwd\" -maxdepth 1 -type d | wc -l"
echo "find: $_find"
if [ "$_find" -gt 1 ]; then
echo ""
fi
Esta é a saída do script
user@my-laptop ~/scripts
$ ./jltest.sh
command: find "/cygdrive/d/apple1" -maxdepth 1 -type d | wc -l
find:
./jltest.sh: line 9: [: : integer expression expected
user@my-laptop ~/scripts
$ find "/cygdrive/d/apple1" -maxdepth 1 -type d | wc -l
3
como pode ser visto no primeiro comando, estou recebendo um erro de "expressão inteira esperada". Mas eu manualmente executar o comando, eu recebo o número 3.
Alguma idéia do porquê isso está acontecendo?
Estes são os conteúdos da minha pasta "apple1".
user@my-laptop ~/scripts
$ ls -la /cygdrive/d/apple1/
total 4
drwxrwx---+ 1 user None 0 May 3 13:11 .
drwxrwx---+ 1 SYSTEM SYSTEM 0 May 3 13:11 ..
drwxrwx---+ 1 user None 0 May 3 13:11 apple11
drwxrwx---+ 1 user None 0 May 3 13:11 apple12
ps. Não tenho certeza se isso é adequado para essa seção do stackexchange, já que o cygwin não é realmente nix. Mas espero receber mais respostas aqui. Além disso, eu tentei o módulo do Windows 10 "Linux para Windows" e é muito cedo beta.