Em 'sh' como colocar o resultado de uma comparação de strings em uma variável?

Mike

No 'shell' básico, como coloco o resultado de uma comparação de string em uma variável booleana?

Considerar:

isweekday() {
          w=$(date +%w)
          if [[ $w == "0" ]] || [[ $w == "6" ]]; then
                  false
          else
                  true
          fi

  }

Pode-se debater se seria mais claro ou não, mas existe uma maneira de atribuir o resultado da expressão 'if' a uma variável booleana, por exemplo

isweekday() {
          w=$(date +%w)
          wd=<boolean result of [[ $w == "0" ]] || [[ $w == "6" ]]>
          return $wd
}

Depois de algumas experimentações, cheguei mais perto do que quero, mas ainda não é o que procuro:

isweekday() {
  w=$(date +%w)
  [[ $w == "0" ]] || [[ $w == "6" ]] 
}

Isso funciona e não requer a condicional, mas parece errado, no entanto, se você fizer isso:

if isweekday; then
  echo 'weekday'
fi

você obterá o resultado certo. Isso parece ser porque o código de saída de 'true' é 0 e o código de saída de 'false' é 1 (não tenho certeza por que isso é ...)

triplo

Não há variáveis ​​booleanas. Todas as variáveis ​​do shell são strings (embora existam recursos limitados para interpretá-los como números inteiros para comparações básicas etc e aritmética básica).

O código de saída 0 é reservado para sucesso; todos os outros códigos de saída (até o máximo de 255) significam um erro (embora algumas ferramentas não padrão usem esse recurso para comunicar resultados sem erro por meio de convenção; supõe-se que o chamador entenda e concorde com esse uso ad hoc do código de saída).

Talvez a resposta mais simples para o que você parece estar perguntando seja salvar o código de saída. Ele é exposto na variável $?. Mas, muitas vezes, você não precisa examinar explicitamente seu valor; na verdade, seu isweekdaycódigo final parece de longe o mais idiomático e natural, e retorna esse código [[implicitamente.

Não entendo por que você acha que seu código final "parece errado"; é exatamente assim que você usaria uma função em uma condicional.

No entanto, em certo sentido, uma casedeclaração pareceria menos confusa aqui (mas essa sintaxe é um pouco chocante no início por outros motivos, até você se acostumar).

is_weekday () {
    case $(date +%w) in
      0 | 6) return 1;;
    esac
    return 0
}

Isso é portátil para POSIX sh, ao contrário da sintaxe Bash-only [[... ]]que você estava usando. Talvez veja também Diferença entre shebash

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Em 'sh' como colocar o resultado de uma comparação de strings em uma variável?

Como posso armazenar o resultado de uma função em uma variável em Python?

Como armazenar o resultado de uma consulta do Firebase em uma variável de uma promessa?

Como colocar uma string de instrução de várias linhas em uma variável?

Armazenar o resultado de uma promessa em uma variável

Como faço para colocar a variável em uma operação de divisão de lista?

Como dar o resultado de uma consulta em uma variável de substituição

Armazenar o resultado de uma chamada de função como uma variável em JavaScript

Como posso colocar uma exibição XML em uma variável de matriz?

Como colocar o valor de uma entrada em uma variável no tkinter

Como capturar o resultado de uma chamada de sistema em uma variável de shell?

Como posso colocar o resultado do comando rfcomm shell em uma variável em python?

Como armazenar o resultado de 'ls' em uma variável e cd nessa variável

Como posso salvar o resultado de uma função em uma variável no BASH?

Como salvar o resultado de uma solicitação GET com OkHttp em uma variável local?

Como você pode capturar o resultado de uma tag de script HTML em uma variável?

Como atribuir um resultado de uma função de seta (=>) a uma variável em JavaScript

Como colocar uma variável em uma instrução def?

Como colocar o valor de um aplicativo como uma variável em javascript?

como colocar o resultado de uma consulta selecionada em uma função no postgresql

Como posso salvar o resultado de uma consulta em uma variável no plsql

Como armazenar o resultado de uma consulta em uma variável

Como atribuo o resultado de uma consulta SQL executada em JDBC a uma variável java?

Como armazenar o resultado de um comando shell executado em uma variável em python?

Armazenando o resultado de "encontrar" em uma variável?

Incapaz de salvar o resultado em uma variável

Como armazenar o resultado da expressão em uma variável no script de lote do Windows?

A comparação de strings não funciona em Javascript ao comparar uma variável de ambiente com uma constante

Como armazenar o resultado de uma instrução LINQ executada em foreach em uma variável para uso futuro?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo