O que está acontecendo com a função stdout dentro?

0
If I run the following command I get the expected output as shown.
jonathan@Aristotle:~/EclipseWorkspaces/AGI/ShellUtilities$ df --output=fstype,source $(pwd)
Type Filesystem
ext4 /dev/sdb1

Se eu colocar o mesmo comando em uma função e invocar a função a partir da linha de comando, não vejo saída. Para onde foi a stdout e por quê?

#
# Copyright © Jonathan Gossage, 2016
#
# getFileSystemInfo
#

function getFileSystemInfo {
    # Get an item of information related to the file system that contains a
    # specific file or directory.
    # $1 is the file or directory to be checked
    # $2 is the specific information type to be checked. See df(1) FIELD_LIST
    #    for full details. As in df you can get more than one type of
    #    information.
    # To access the information returned, capture stdout in your script.
    echo "We are in getFileSystemInfo"
    df --output=$2 "$1"
    return $?
}
jonathan@Aristotle:~/EclipseWorkspaces/AGI/ShellUtilities$ Sourced/getFileSystemInfo $(pwd) fstype,source
    
por Jonathan 25.05.2016 / 00:22

1 resposta

1

Não há stdout em seu exemplo: agrupar uma definição de função de shell em um arquivo de script e, em seguida, chamar o script não executa a função. Você precisa fornecer o script para que a função se torne disponível no shell atual

. Sourced/getFileSystemInfo
getFileSystemInfo $(pwd) fstype,source

ou modifique o script para que ele chame a função e transmita seus próprios argumentos, adicionando uma linha como

 getFileSystemInfo "$@"

Neste momento, você está simplesmente chamando um script que não faz nada, com parâmetros posicionais que são ignorados.

    
por steeldriver 25.05.2016 / 16:13