Valor de retorno de um subscrito em ksh

0

Eu quero chamar um script de dentro de um script como abaixo

weeknum=$(getweek )

Aqui, o getweek é um arquivo de script. Como gravar o arquivo de script secundário para que ele retorne o valor para weeknum. Devo usar retorno ou sair com status como valor de retorno

    
por xGen 19.01.2016 / 07:05

4 respostas

1

Você pode muito bem usar echo para essa finalidade.

$ cat new
echo 1
$ number=$(./new)
$ echo $number
1

Acho que isso serve ao propósito. Observe também que new acima é o script que você vai escrever.

comentário abaixo se eu tiver errado algo

    
por 19.01.2016 / 07:18
1

A sintaxe $(cmd) captura a saída padrão de cmd (despojado de caracteres de nova linha à direita).

Portanto, tudo o que você precisa fazer é ter getweek da informação:

#! /bin/sh -
date +%V # or %U or %W

date gera o número da semana em seu stdout que herda de sh , que no caso de weeknum=$(getweek) é definido como um pipe ou par de soquetes pelo shell na outra extremidade da qual o shell lê a saída para armazenar na variável weeknum .

Você também pode retornar o número da semana no status de saída:

#! /bin/sh -
exit "$(date +%W)"

Qual você obtém com:

getweek
weeknum=$?

mas eu aconselharia contra isso. O status de saída deve ser reservado para relatório de erros ou limitado a valores verdadeiro / falso.

Tipicamente acima, se houver um erro (ao bifurcar um processo, ao executar date ou sh ) ou o processo for eliminado, você receberá um status de saída diferente de zero, que não deve ser tratado como um < em> número da semana .

    
por 19.01.2016 / 13:37
0

Você pode experimentar o abaixo

output=$(sh <scriptname>)

E eu sinto que neste caso você também pode tentar escrever uma função no seu script que deve ajudar a alcançar seu objetivo.

    
por 19.01.2016 / 08:31
0

Coloque o valor no stdout usando qualquer comando e leia-o.

# somesubscript
# do something
echo "my value is here"   # echo is a method to put something to the stdout

Dê exec priv. para subscrito:

chmod a+rx somesubscript

E use-o

val=$(./somesubscript)
echo "$val" # will echo my value is here

return e exit é usado para dizer ao chamador se está tudo bem ou não. Não para valores de retorno.

    
por 19.01.2016 / 18:46

Tags