O que esses comandos de um shell script fazem?

6

Estou apenas começando a aprender bash. Eu tenho o seguinte script, e gostaria de saber o que os seguintes comandos fazem para começar a entender um pouco este mundo.

if [ ! -w "." ]
then
echo "You need write permission in the directory"
exit 1
fi

firefoxGeditOpen=ps -d | grep -ic -e firefox -e gedit
if [[firefoxGeditOpen>0]]
then
echo "Firefox and Gedit must be closed to let the script work"
exit 1
fi

while(true)
do
firefox &
firefoxPid=$!
gedit &
geditPid=$!
echo "Firefox PID $firefoxPid Gedit PID $geditPid">>result.txt
wait
echo "You have closed all the processes. They will be re-opened">>result.txt
done

Obrigado antecipadamente!

    
por Lautaro Alvarez 17.04.2015 / 02:06

1 resposta

7

Como eu mencionei no meu comentário , há algumas peças vitais que estão faltando aqui e esses comandos juntos não faz muito sentido, mas vou passar por cima deles.

  1. if [ ! -w "." ] : . representa o diretório atual. -w testa se é gravável. ! nega o teste (portanto, a declaração retorna true se o diretório não for gravável versus o contrário).

  2. ps -d | grep -ic -e firefox -e gedit : ps -d imprime todos os processos menos os iniciadores de sessão. grep pesquisa a saída canalizada de ps para padrões (que chegaremos em um minuto). -i torna o caso de pesquisa insensível. -c gera uma contagem das correspondências em vez das correspondências reais. -e usa as expressões de pesquisa. Nesse caso, firefox e gedit . Então, se nem o FF nem o gedit estiverem rodando, o comando irá mostrar 0. Se um deles estiver rodando, ele irá gerar 1. Se ambos estiverem rodando, ele irá gerar 2.

  3. firefox & : inicie o Firefox. & força o processo para o segundo plano.

  4. firefoxPid=$! : Em um script de shell bash $! contém o número da tarefa do último comando background. firefoxPid é uma variável. Então, o que está acontecendo aqui é o número do último comando background (que por acaso é do firefox) ser armazenado em uma variável chamada firefoxPid .

por Seth 17.04.2015 / 02:25