2017-04-16 34 views
0

我面臨着一個問題,這個簡單的代碼,其中我調用一個函數,但該函數的變量$ X似乎不通過外部,因爲打印輸出消息始終是「您的界面是「。 ... 我錯過了什麼?函數內的變量-linux外殼腳本

#! /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

我想'X'只存在於'choose'函數的範圍內。嘗試刪除函數定義/調用,或者在'choose'函數體內移動'echo'。 – Mark

回答

2

運行(choose)使用圓括號在子外殼中執行它。

Advanced Bash-Scripting Guide

變量在子shell不是的代碼在子shell塊外部可見。對於啓動子shell的shell,父進程無法訪問它們。實際上,這些是局部變量。

拆除周圍choose括號會讓您echo變量X可見。