gpt4 book ai didi

linux - 如何将 shell 脚本变量导出到子脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:04 26 4
gpt4 key购买 nike

<分区>

我有一个非常简化的 bash 脚本,它会 self 调用,但无法将导出的变量 id 保存到子脚本中:

  1 #! /bin/bash
2
3 SCRIPT="$(realpath "${0}")"
4
5 echo "start script"
6 echo "euid= $EUID"
7
8 if [ $EUID != 0 ]; then
9
10 export id=$EUID
11 sudo ${SCRIPT}
12 exit 0
13 fi
14
15 echo "HERE WE ARE ROOT"
16 echo "euid= $EUID"
17 echo "id= $id"
18
19 exit 0

输出是:

start script
euid= 1000
start script
euid= 0
HERE WE ARE ROOT
euid= 0
id=

普通用户的 EUID 是 1000,我想做的是将这个 EUID 保留在以 root 身份运行的子进程中。

id 在子脚本中未绑定(bind)。

所以我用交互式 shell 做了一个简单的测试:

$ export var=1
$ /bin/bash
$ echo $var
1
$ var=2
$ echo $var
2
$ exit
$ echo $var
1

var 在这里正确导出,但在其他情况下不正确,有什么区别?

我想我遗漏了一些明显的东西,因为我对 shell 脚本编写经验还很缺乏。

谢谢。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com