redhat / bash - dois scripts iguais, um erro "comando não encontrado" [duplicado]

0

Eu escrevi dois scripts, onde um tem parte de código simples dos outros e vários comentários em:

usuário: oracle ambos os arquivos são de oracle. ambos os arquivos têm a permissão de execução em: chmod + x fpc.sh & & chmod + x bpc.sh

script que funciona: fpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
TARGHET="\/app\/oracle\/admin\/DB\/$1"
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

script que não funciona: bpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
#
#TARGHET="\/app\/oracle\/admin\/DB\/$1"
#
#
#
#
#
#
#
#
#
#
#
#
#
#
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

bpc.sh recebe:

comando chmod não encontrado encontrar comando não encontrado

Como é possível?

obrigado pela sua colaboração,

    
por Milton Andres Gomez 05.06.2018 / 19:59

1 resposta

2

É por isso que usar CAPS para nomes de variáveis no Bash é uma ideia muito ruim .

Se você tivesse usado snake_case ou CamelCase , você não teria alterado a variável ambiental PATH .

Ergo:

path=/app/oracle/admin/DB/$1

está ok

PATH=/app/oracle/admin/DB/$1

não é.

Executar

( set -o posix ; set )

para ver apenas muitas variáveis que você pode sobrescrever erroneamente com variáveis CAPS . Em vez de tentar acompanhá-los, tome como regra geral que não use CAPS .

    
por 05.06.2018 / 20:32