我有两个 shell 脚本,用于两个不同的用户“a”和用户“root”:
a.sh 用户 'a'
export CODE=`pwd | cut -d / -f 5`
isEnabled=`grep -i isEnabled $HOME/$CODE/config/code.properties | awk -F'=' '{print $2}'`
b.sh 用户 'root'
su - a -c "sh /export/home/a/a1/bin/a.sh status
如你所见,root 执行脚本 b.sh 执行脚本 a.sh 但实际上它失败了,因为它没有找到脚本的路径,因为 a.sh 中的变量 $CODE 在运行 b.sh 时可能在运行时丢失
经过调查,我厌倦了 b.sh 中的以下内容:
. /path/to/a.sh
source /path/to/a.sh
. /path/to/a.sh "$CODE"
. $(/path/to/a.sh $CODE)
有人可以建议吗?
谢谢大家
最佳答案
变量 $CODE
应该在那里,但它将被设置为 a 的主目录。尝试使用 basename $0
而不是 pwd
。这将获取正在执行脚本的目录,而不是执行脚本的用户的当前工作目录。
关于linux - 无法通过调用另一个脚本来执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43602085/