linux - 无法通过调用另一个脚本来执行脚本

标签 linux bash shell

我有两个 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/

相关文章:

linux - lxc - Linux容器无法访问设备节点

BASH:重用来自同一命令的参数

git - 如何捕获 git 提交消息并运行操作

linux - bash脚本中的十进制值变为全零

java - 在 Windows 7 中运行进程并获取其 ID

arrays - Bash 数组脚本排除重复项

linux - 在文件生成/从用户上传到我的服务器期间流式传输 awk

android - 从 Android 终端禁用设备所有者应用程序

linux - Sigaction 不起作用

linux - 在 shell 中合并两个文件,如粘贴命令