我确实编写了两个脚本,其中一个脚本包含其他脚本的部分简单代码以及一些注释:
用户: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_case
or CamelCase
,则不会更改环境变量PATH
。
因此:
path=/app/oracle/admin/DB/$1
没问题
PATH=/app/oracle/admin/DB/$1
不是。
跑步
( set -o posix ; set )
为了查看有多少变量,您可能会错误地用CAPS
变量覆盖。与其试图跟踪它们,不如将其视为一般规则不是使用CAPS
。