เพื่อที่จะส่งออกตัวแปร VAR ก่อนตรรกะที่มากที่สุดและดูเหมือนว่าวิธีการทำงานคือการจัดหาตัวแปร:
. ./export.bash
หรือ
source ./export.bash
ตอนนี้เมื่อสะท้อนจากเปลือกหลักมันทำงาน
echo $VAR
HELLO, VARABLE
ตอนนี้เราจะรีเซ็ต VAR
export VAR=""
echo $VAR
ตอนนี้เราจะเรียกใช้งานสคริปต์ไปยังแหล่งที่มาของตัวแปรแล้วยกเลิกการตั้งค่า:
./test-export.sh
HELLO, VARABLE
--
.
รหัส: cat test-export.sh
#!/bin/bash
# Source env variable
source ./export.bash
# echo out the variable in test script
echo $VAR
# unset the variable
unset VAR
# echo a few dotted lines
echo "---"
# now return VAR which is blank
echo $VAR
นี่คือวิธีหนึ่ง
โปรดทราบ: การส่งออกถูก จำกัด ให้สคริปต์ที่ดำเนินการส่งออกในคอนโซลหลักของคุณ - ตราบใดที่งาน cron ฉันจะเพิ่มมันเหมือนคอนโซลด้านล่าง ... สำหรับส่วนคำสั่งยังคงเป็นที่น่าสงสัย: นี่คือวิธีที่คุณจะ ทำงานจากเปลือกของคุณ:
บนพรอมต์คำสั่งของคุณ (ตราบใดที่ export.bash มีหลายค่า echo)
IFS=$'\n'; for entries in $(./export.bash); do export $entries; done; ./v1.sh
HELLO THERE
HI THERE
cat v1.sh
#!/bin/bash
echo $VAR
echo $VAR1
ตอนนี้ตราบเท่าที่นี่สำหรับการใช้งานของคุณ - คุณสามารถทำให้ตัวแปรพร้อมใช้งานสำหรับสคริปต์ของคุณได้ตลอดเวลาโดยทำนามแฝงทุบตีเช่นนี้
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
เพิ่มลงใน. bashrc ของคุณ
function myvars() {
IFS=$'\n';
for entries in $(./export.bash); do export $entries; done;
"$@";
for entries in $(./export.bash); do variable=$(echo $entries|awk -F"=" '{print $1}'); unset $variable;
done
}
แหล่งไฟล์ bashrc ของคุณและคุณสามารถทำเช่นนี้ได้ทุกเมื่อ ...
อย่างไรก็ตามกลับไปที่เหลือของมัน ..
สิ่งนี้ทำให้ใช้ได้ทั่วโลกจากนั้นเรียกใช้สคริปต์ ..
เพียงแค่ก้องออกมาจากนั้นเรียกใช้การส่งออกในเสียงสะท้อน!
แมวส่งออกทุบตี
#!/bin/bash
echo "VAR=HELLO THERE"
ขณะนี้อยู่ในสคริปต์หรือคอนโซลของคุณทำงาน:
export "$(./export.bash)"
ลอง:
echo $VAR
HELLO THERE
หลายค่าตราบใดที่คุณรู้ว่าคุณคาดหวังอะไรในสคริปต์อื่นโดยใช้วิธีการด้านบน:
แมวส่งออกทุบตี
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
cat test-export.sh
#!/bin/bash
IFS=$'\n'
for entries in $(./export.bash); do
export $entries
done
echo "round 1"
echo $VAR
echo $VAR1
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 2"
echo $VAR
echo $VAR1
ตอนนี้ผลลัพธ์
./test-export.sh
round 1
HELLO THERE
HI THERE
round 2
.
และอัปเดตครั้งสุดท้ายเพื่อกำหนดอัตโนมัติให้อ่านตัวแปร:
./test-export.sh
Round 0 - Export out then find variable name -
Set current variable to the variable exported then echo its value
$VAR has value of HELLO THERE
$VAR1 has value of HI THERE
round 1 - we know what was exported and we will echo out known variables
HELLO THERE
HI THERE
Round 2 - We will just return the variable names and unset them
round 3 - Now we get nothing back
สคริปต์: cat test-export.sh
#!/bin/bash
IFS=$'\n'
echo "Round 0 - Export out then find variable name - "
echo "Set current variable to the variable exported then echo its value"
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
export $entries
eval current_variable=\$$variable
echo "\$$variable has value of $current_variable"
done
echo "round 1 - we know what was exported and we will echo out known variables"
echo $VAR
echo $VAR1
echo "Round 2 - We will just return the variable names and unset them "
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 3 - Now we get nothing back"
echo $VAR
echo $VAR1