Você pode substituir esses arquivos lendo <&0 e escrevendo para >&1 e >&2 , ou seja. stdin, stdout e stderr, respectivamente.
Eu tenho portado vários scripts no AIX 7.1 . Eu não tenho experiência anterior com este sistema Unix.
Os scripts foram executados em /bin/sh e dependiam de /dev/stdout , /dev/stdin e /dev/stderr . Esses arquivos são não padronizados e o AIX 7.1 não parece implementá-los.
Quando descobri que o /proc VFS está presente, tentei substituir o /dev/std{in|out|err} por /proc/$$/fd/{0|1|2} . Isso falhou, pois os descritores não são links para um pts , mas um dispositivo de arquivo char real com permissões 000 ( c--------- ).
Sabe-se que o /bin/bash emula muitos dispositivos em /dev , incluindo /dev/std* . Minhas experiências limitadas com a mudança para /bin/bash de /bin/sh e usando /dev/std* foram bem-sucedidas. No entanto, comutação & testar todos os scripts para /bin/bash seria demorado.
Pergunta:
Como lidar com os arquivos IO padrão no AIX 7.1 em /bin/sh ? Está empregando por exemplo. /dev/tty do caminho?
// Exemplo de uma chamada em um dos scripts a serem portados:
# param_protocol parameter apparently needs a file representation of the stdout
black_box_binary param1=$value1 param2=$value2 param_protocol=/dev/stdout
Você pode substituir esses arquivos lendo <&0 e escrevendo para >&1 e >&2 , ou seja. stdin, stdout e stderr, respectivamente.
Os arquivos /dev/std{in,out,err} poderiam ser apenas links simbólicos para /proc/$$/fd/{0,1,2} ? Consulte " Erro padrão e outro redirecionamento de saída " para informações contextuais . No entanto, de acordo com um segmento anterior, a portabilidade de > / dev / stdout ” parece ser dependente do shell.