简单的 Bash 脚本不起作用

简单的 Bash 脚本不起作用

我对 Bash 脚本还很陌生。我正在尝试编写一个脚本来导出 http_proxy 变量。这是我从终端执行的操作:

$export http_proxy=http://proxy21.iitd.ernet.in:3128/
$export https_proxy=https://proxy21.iitd.ernet.in:3128/

这很好用。现在,这是我的脚本(称为 setproxy):

#!/usr/bin/env bash
if [ $1 -eq 22 ]
then
    export http_proxy=http://proxy22.iitd.ernet.in:3128/
    export https_proxy=https://proxy22.iitd.ernet.in:3128/
elif [ $1 -eq 21 ]
then
    export http_proxy=http://proxy21.iitd.ernet.in:3128/
    export https_proxy=https://proxy21.iitd.ernet.in:3128/
elif [ $1 -eq 61 ]
then
    export http_proxy=http://proxy61.iitd.ernet.in:3128/
    export https_proxy=https://proxy61.iitd.ernet.in:3128/
elif [ $1 -eq 62 ]
then
    export http_proxy=http://proxy62.iitd.ernet.in:3128/
    export https_proxy=https://proxy62.iitd.ernet.in:3128/
fi

本质上,我想根据输入设置适当的代理服务器。我将其放在 bin 文件夹中,使其可执行,将 bin 添加到路径,登录并退出。终端接受 setproxy 作为有效命令(至少没有命令未找到错误)但是,当我这样做时:

$setproxy 22

没有效果。代理保持不变。我做错了什么?

答案1

调用脚本时,会调用一个新的子 shell 来运行它。它的代理已设置,但父进程(您的 shell)的代理不能从子进程更改。尝试采购脚本,即调用它

. setproxy 21

然后该脚本将被你当前的shell解释。

相关内容