我有两个用于两个不同用户用户的shell脚本' a'和用户' root':
用户' a 'a.sh
export CODE=`pwd | cut -d / -f 5`
isEnabled=`grep -i isEnabled $HOME/$CODE/config/code.properties | awk -F'=' '{print $2}'`
用户' root' b.sh
su - a -c "sh /export/home/a/a1/bin/a.sh status
如您所见,root执行脚本b.sh执行脚本a.sh 但实际上它失败了,因为它找不到脚本的路径 运行b.sh
时,运行时可能缺少a.sh中的变量$ CODE经过调查我在 b.sh :
中累了以下内容. /path/to/a.sh
source /path/to/a.sh
. /path/to/a.sh "$CODE"
. $(/path/to/a.sh $CODE)
有人可以提出建议吗?
谢谢大家。
答案 0 :(得分:0)
变量$CODE
应该存在,但它将被设置为主目录。尝试使用basename $0
代替pwd
。这将获得正在执行脚本的目录,而不是执行它的用户的当前工作目录。