函数内的变量 - Linux Shell Script

时间:2017-04-16 14:16:24

标签: linux function shell variables

我遇到这个简单代码的问题,我调用了一个函数,但该函数的变量$ X似乎没有传递到外面,因为打印输出消息总是“你的界面是。” ... 我错过了什么吗?

#! /bin/bash
function choose
{
echo -e " Choose your interface:"
echo -e " 1) WLan0"
echo -e " 2) WLan0mon"
echo -e " Choose: "
read -e X
if [ "$X" = "1" ]
then
    X="wlan0"
elif [ "$X" = "2" ]
then
    X="wlan0mon"
fi
}


(choose)
echo -e "Your interface is $X."

1 个答案:

答案 0 :(得分:2)

使用括号运行(choose)在子shell中执行它。

来自Advanced Bash-Scripting Guide

  

子shell中的变量在子shell中的代码块之外是不可见的。父进程无法访问它们,无法访问启动子shell的shell。实际上,这些是局部变量。

删除choose周围的括号会使变量X对您的echo可见。