Minha aplicação:
#!/bin/sh
#
# D2GS
#
# Go to the directory
cd ~
# Run the applications
if ! ps aux | pgrep "D2GS"; then
wine "C:/D2GS/D2GS.exe" >& /dev/null &
fi
Dá erro:
./d2gs.sh: 14: ./d2gs.sh: Erro de sintaxe: Número fd incorreto
O que é estranho, desde quando eu começo wine "C:/D2GS/D2GS.exe" >& /dev/null &
- ele roda sem problemas. A razão pela qual quero iniciá-lo a partir do shell é porque quero crontab a cada minuto.
>&
a sintaxe não é suportada porsh
. Você está usando explicitamentesh
como shell nesse script. Você precisa reescrever essa linha como:>&
é a sintaxe csh (também suportada porzsh
versões recentes debash
) para redirecionar stdout e stderr para um arquivo.Em
sh
(Bourne (de onde vem) e POSIX), a sintaxe é:(você também tem a sintaxe ps/pgrep errada;
pgrep
não lê seu stdin, portanto, canalizar a saídaps
para ele é inútil).Para completar, a sintaxe para redirecionar stdout e stderr em vários shells:
> file 2>&1
: Bourne, POSIX e derivados e peixes>& file
: csh, tcsh, zsh e bash 4+ (embora emzsh
ebash
somente quando o nome do arquivo não é uma sequência de dígitos decimais, caso contrário, é o>&fd
operador de redirecionamento Bourne).&> file
: bash e zsh 3+> file >[2=1]
: rc e derivados> file ^&1
: peixe