<![CDATA[Latest posts for the topic "Không gán biến trong shell script (file.sh) được"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Không gán biến trong shell script (file.sh) được Code:
[root@firewall ~]# EXTIF=`/sbin/route | grep -i 'default' | awk '{print$8}'`
[root@firewall ~]# echo $EXTIF
eth0
OK, câu lệnh hoạt động như mong muốn Nhưng nếu mình ném câu lệnh gán biến trên vào trong file.sh và chạy Code:
[root@firewall ~]# sh file.sh
[root@firewall ~]# echo $EXTIF

[root@firewall ~]
echo trả về kết quả là trống hoặc là kết quả cũ của phép gán trước đó (trên console) chứ không phải phép gán trong file.sh Mình đang dùng CentOS 6.5. Mong được mọi người giúp đỡ về vấn đề này :( (mình đã chmod +x file.sh)]]>
/hvaonline/posts/list/45812.html#281534 /hvaonline/posts/list/45812.html#281534 GMT
Không gán biến trong shell script (file.sh) được sh file.sh thì mình dùng Code:
. file.sh
thì lại được mặc dù không hiểu tại sao câu lệnh sh lại không có tác dụng]]>
/hvaonline/posts/list/45812.html#281535 /hvaonline/posts/list/45812.html#281535 GMT
Không gán biến trong shell script (file.sh) được sh file.sh tạo tiến trình mới, thực thi trong một "shell environment" mới. Biến EXTIF chỉ tồn tại trong lúc tiến trình chạy. Khi tiến trình kết thúc, EXTIF không tồn tại. - . file.sh hay là source file.sh đọc và thực thi các câu lệnh từ file.sh trong "shell environment" hiện tại.]]> /hvaonline/posts/list/45812.html#281536 /hvaonline/posts/list/45812.html#281536 GMT Không gán biến trong shell script (file.sh) được

bino1810 wrote:
Một cách ngắn gọn: - sh file.sh tạo tiến trình mới, thực thi trong một "shell environment" mới. Biến EXTIF chỉ tồn tại trong lúc tiến trình chạy. Khi tiến trình kết thúc, EXTIF không tồn tại. - . file.sh hay là source file.sh đọc và thực thi các câu lệnh từ file.sh trong "shell environment" hiện tại. 
À, ra là vậy. Cám ơn anh rất nhiều :D]]>
/hvaonline/posts/list/45812.html#281565 /hvaonline/posts/list/45812.html#281565 GMT