function readPip()
{
echo "Enter your partener IP"
read ip
export 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/ -f1
echo -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.