我遇到这个简单代码的问题,我调用了一个函数,但该函数的变量$ 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."
答案 0 :(得分:2)
使用括号运行(choose)
在子shell中执行它。
来自Advanced Bash-Scripting Guide:
子shell中的变量在子shell中的代码块之外是不可见的。父进程无法访问它们,无法访问启动子shell的shell。实际上,这些是局部变量。
删除choose
周围的括号会使变量X
对您的echo
可见。