Usando o valor de uma variável como um código de saída de um script

1

Posso encontrar muitas informações sobre como atribuir o código de saída de um script a uma variável av, mas quero fazer o contrário: use o valor de uma variável (definida em um script) como o código de saída do script .

Por exemplo, eu tenho um script que cuida do número de arquivos abertos em um sistema de arquivos específico (mais um monte de outras coisas). Eu quero que o código de saída do script seja o número de arquivos abertos, então essencialmente:

#!/bin/bash

OPENFILES='lsof /filesystem | wc -l'

exit $OPENFILES

Então, depois que o script sair, "echo $?" vai me dar o valor de $ OPENFILES que foi definido no script.

Eu tentei várias permutações de uso de citações, parênteses, etc, mas aparecem vazias. Eu sinto que o que eu estou tentando fazer é ou impossível, ou tão óbvio que eu estou negligenciando isso ...

    
por gfd 04.05.2018 / 20:00

2 respostas

2

Você não pode realmente usar o código de saída para o que deseja, até porque o código de saída é um número inteiro entre 0 e 255. Qual comportamento você desejaria se houvesse 783 arquivos abertos?

Além disso, esse uso é fundamentalmente quebrado, pois você está postulando um código de saída diferente de zero não sendo uma condição de erro, que não é remotamente compatível com os padrões.

    
por 04.05.2018 / 20:05
0

Você não precisa gravar em um arquivo. Apenas faça o script gerar os resultados wc

#!/bin/sh
lsof /filesystem | wc -l

e depois capturar o resultado com

openfiles=$(/path/to/openfiles.sh)

Se o seu script não for mais complicado do que isso, basta adicionar isso ao seu ~ / .bashrc

alias openfiles='lsof /filesystem | wc -l'

e depois

n=$(openfiles); echo $n
    
por 04.05.2018 / 22:22