রফতানযোগ্য ভেরিয়েবল স্ক্রিপ্ট কার্যকর হওয়ার পরে স্থির থাকে না


8

আমি একটি জঘন্য সমস্যার মুখোমুখি। আমি সোলারিস 11 এর সাথে একটি ভিএম করেছি এবং কিছু বাশ স্ক্রিপ্ট লেখার চেষ্টা করছি।

যদি, শেলটিতে আমি টাইপ করি:

export TEST=aaa

এবং পরবর্তীকালে চালানো:

set

আমি সঠিকভাবে TEST নামে একটি নতুন পরিবেশের পরিবর্তনশীল দেখতে পাচ্ছি যার মান আআ। তবে, আমি স্ক্রিপ্টে মূলত একই জিনিস করি। স্ক্রিপ্টটি শেষ হয়ে গেলে আমি ভেরিয়েবল সেটটি দেখতে পাচ্ছি না। একটি দৃ concrete় উদাহরণ তৈরি করতে, যদি কোনও ফাইল টেস্টে থাকে তবে আমার কাছে রয়েছে:

#!/usr/bin/bash
echo 1: $TEST   #variable not defined yet, expect to print only 1:
echo 2: $USER
TEST=sss
echo 3:  $TEST
export TEST
echo 4:  $TEST

এটি মুদ্রণ:

1:
2: daniele
3: sss
4: sss

এবং কার্যকর করার পরে, টেস্টটি শেলটিতে সেট করা হয় না। আমি কিছু অনুপস্থিত করছি? আমি উভয়ই TEST = sss রফতানি এবং পৃথক ভেরিয়েবল সেট / এক্সপোর্ট কোনও পার্থক্য ছাড়াই করার চেষ্টা করেছি।

উত্তর:


15

এক্সপোর্ট - শিশু প্রক্রিয়াগুলির জন্য পরিবর্তনশীল উপলভ্য করুন, তবে পিতামাতার জন্য নয়।

উত্স - শিশু প্রক্রিয়া তৈরি না করে শেলের স্ক্রিপ্ট চালান

এক্সালাম্পের জন্য, অবিচলিত পরিবর্তনশীল ফাইলটিতে লেখার মাধ্যমে উপলব্ধি করা যায়

#!/usr/bin/bash
echo 1: $TEST   #variable not defined yet, expect to print only 1:
CONFIGFILE=~/test-persistent.vars
if [ -r ${CONFIGFILE} ]; then
  # Read the configfile if it's existing and readable
  source ${CONFIGFILE}
fi
echo 2: $TEST
echo 3: $USER
TEST=sss
echo 4:  $TEST
echo TEST="$TEST"> ${CONFIGFILE}
echo 5:  $TEST

এটি আমি যা অর্জন করতে চেয়েছিলাম ঠিক তা নয়, তবে আমি আপনার বক্তব্যও পেয়েছি। ধন্যবাদ।
ড্যানিয়েল

5

আপনার ভেরিয়েবলগুলি দৃশ্যমান করতে আপনার sourceস্ক্রিপ্টের দরকার যা আপনার ভেরিয়েবলগুলি রফতানি করে। দেখুন man source


1
সম্ভবত কোনও উত্স ম্যানপেজ নেই, এবং আপনি help sourceপরিবর্তে ব্যাশে চান ।
স্টিউ

যদি আমি সরাসরি স্ক্রিপ্টটি আহ্বান করি তবে এটি কাজ করে (যেমন আমি যদি শেল থেকে রফতানির সাথে স্ক্রিপ্ট উত্স করি) তবে অন্য স্ক্রিপ্টের মধ্যে থেকে যদি আমি স্ক্রিপ্টটি উত্স করি তবে এটি কাজ করবে বলে মনে হয় না।
ড্যানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.