Eu preciso ser capaz de escrever se o teste para um grep é TRUE ou FALSE para uma variável para que eu possa usá-lo mais tarde
Para o seguinte, se eu correr
defaults read com.apple.Finder | grep "AppleShowAllFiles"
no meu sistema, voltaria
AppleShowAllFiles = FALSE;
Legal. Então agora eu quero canalizar essa resposta para um teste de algum tipo. É aqui que fico preso.
Eu acho que se eu puder canalizar / atribuir essa saída a uma variável especificada, eu seria capaz de executar um teste nela. Agora, basta dizer, eu atribuí o valor desta saída para uma variável, neste caso, vou usar $ASAF
como minha variável, eu posso executá-lo em um teste como este
if [ $ASAF = "AppleShowAllFiles = TRUE;" ]; then
defaults write com.apple.Finder AppleShowAllFiles FALSE
killall Finder
else
defaults write com.apple.Finder AppleShowAllFiles True
killall Finder
fi
Se houver alguma outra maneira de fazer isso, eu estaria mais do que aberto a opções. Eu não tive que fazer algo assim por um tempo, e estou um pouco perplexo. Eu pesquisei o Google um pouco, mas foi tudo respostas sem explicações e usando o valor de retorno de 0
ou 1
. Acho que a saída retornada sendo atribuída a uma variável seria mais apropriada, pois eu posso usá-la repetidamente no script, conforme necessário.
fonte
TRUE
ouFALSE
de uma resposta. Ainda melhor dogrep
que testar. Obrigado!Experimentar
$(...)
executa a parte entre()
e substitui com o resultado. Então você também pode fazerpara atribuir o resultado a
$ASAF
.PS: Eu também mudei duas outras coisas no seu script
[[
para a parte de teste (tem mais funcionalidade do que[
e é embutido no bash==
para comparar strings (=
é somente para atribuições)fonte
defaults write.com.apple
recuar mais do que as linhas acima e abaixo? Eu tentei fazer isso funcionar para o valor de formatação e ele falhou. : - />
é para citar, 4 caracteres de espaço são para o código :-)foofoo=$(defaults read com.apple.foobar | grep "foo")
. Eu usarei seu método no futuro. Parece mais estável.=
também pode ser usado para comparações dentro[[
e[
/test
no bash. O POSIX define=
mas não==
(mas o POSIX não define[[
nenhum dos dois).