function readPip(){echo "Enter your partener IP"read ipexport PIP= $ip}
O espaço após o sinal de igual é um erro de sintaxe. Mas, além disso, tudo isso poderia ser refatorado para apenas
readPip () {
read -p "Enter your partner's IP: " PIP
}
O export é desnecessário, pois você não precisa de processos filhos externos para ter acesso a essa variável.
function readMip(){mip=ip addr list eth0 |grep "inet " |cut -d' ' -f6|cut -d/ -f1echo -n "'my IP is"$mip"export MIP=$mip}
Novamente, isso contém um erro; você atribui a mip o valor ip e então (tenta) executar o comando addr list ... , onde aparentemente a intenção é executar ip addr list ... e atribuir o resultado disso a MIP .
readMip () {
ip addr list eth0 |grep "inet " |cut -d' ' -f6|cut -d/ -f1'
}
Aqui, eu simplesmente deixo a tarefa para o chamador ( readPip poderia ser refatorado da mesma forma para consistência).
No código principal, você teria
MIP=$(readMip)
Novamente, o export não é necessário nem útil.
function chat(){[[ $PIP != " " ]]&& nc $PIP 2015[[ $PIP == " " ]] && nc -l -p 2015}
Isto é claramente "if - then-else" e deve ser escrito de acordo.
chat () {
if [[ "$PIP" == " " ]]; then
nc -l -p 2015
else
nc "$PIP" 2015
fi
}
ou até mesmo
[[ "$PIP" == " " ]] && nc -l -p 2015 || nc "$PIP" 2015
Observe também que eliminei a palavra-chave Bash-only function . Você ainda tem alguns Bashisms aqui, mas eles podem ser refatorados para um script portátil POSIX.