当前位置:  开发笔记 > 编程语言 > 正文

变量没有被回应

如何解决《变量没有被回应》经验,为你挑选了1个好方法。

当我在Bash 3.2.48中运行以下脚本时:

#!/bin/bash

export var1='var1'
echo "UID=$UID"

if [ x"$UID" != x"0" ]
then
    export var2='var2'
    while ! { sudo -v; }; do { sudo -v; }; done;
    sudo $0
    exit
fi

echo $var1
echo $var2

exit 0

我得到的输出是:

UID=1000
UID=0
var1

为什么var2没有导出和回显?我很确定相同的脚本适用于较旧的Bash版本.



1> vartec..:

如果您首次输入UID == 1000,则输入if子句

你sudo用UID == 0执行脚本; 如果在/ etc/sudoers中设置了env_reset,则sudo 不会保留环境(在大多数发行版中都是默认值).你需要sudo -E来保存环境.

你退出(在回声之前)

从sudo打电话,你进入干净的环境.

你用UID == 0输入

如果没有输入if子句,则不设置var2

你回应变量.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有