ler: opção ilegal -u

1

Estou tentando usar read, para ler um descritor de arquivo, da seguinte forma:

read -u fd

como em neste link .

Aqui está o código que estou usando em um script bash:

MESSAGE=$(read -u $NODE_CHANNEL_FD)
echo " parent message => $MESSAGE"  >&2

A mensagem de erro exata:

read: Illegal option -u

Alguém sabe o que isso poderia ser?

    
por Alexander Mills 09.12.2016 / 04:18

1 resposta

6

A mensagem de erro sugere que você não está realmente executando o script usando bash .

Torne o script executável e adicione uma #! -line adequada na primeira linha do script, por exemplo,

#!/bin/bash

Ou execute o script com bash explicitamente:

$ bash script.sh

Você deve tratar sh e bash como implementando idiomas separados e usar o intérprete correto para o script que está escrevendo. Nesse caso, você está usando read com a opção -u . Esta é originalmente uma extensão ksh da especificação read padrão e também é implementada em bash e zsh . Portanto, você precisa executar o script com bash , zsh ou ksh .

Como saber quando usar sh e quando usar bash ou algum outro shell? É simples, você aprende a maneira como o sh funciona e que outros recursos outros shells adicionam.

    
por 04.09.2017 / 13:10