redhat/bash - 两个等于脚本,一个得到“命令未找到”错误

redhat/bash - 两个等于脚本,一个得到“命令未找到”错误

我确实编写了两个脚本,其中一个脚本包含其他脚本的部分简单代码以及一些注释:

用户:oracle 这两个文件都是oracle的。这两个文件都有执行权限: chmod +x fpc.sh && chmod +x bpc.sh

有效的脚本: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

不起作用的脚本: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 得到:

chmod 命令未找到 find 命令未找到

怎么可能呢?

感谢您的合作,

答案1

这就是为什么CAPS在 Bash 中使用变量名是一个真是个坏主意

如果您使用了snake_caseor CamelCase,则不会更改环境变量PATH

因此:

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

没问题

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

不是。

跑步

( set -o posix ; set )

为了查看有多少变量,您可能会错误地用CAPS变量覆盖。与其试图跟踪它们,不如将其视为一般规则不是使用CAPS

相关内容