আমি কিভাবে একটি করা source
ডি স্ক্রিপ্ট স্বয়ংক্রিয়-রিটার্ন যদি এটির মধ্যে কোন কমান্ড ব্যর্থ হয়?
ধরুন আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা ব্যর্থতার মাধ্যমে স্বয়ংক্রিয়-এক্সাইট করে set -e
, যেমন
#!/bin/bash
# foo.env
set -e # auto-exit on any command failure
echo "hi"
grep 123 456 # this command will fail (I don't have a file named "456")
echo "should not reach here"
যদি আমি সাধারণত কমান্ডটি চালাই, এটি ব্যর্থ হয়ে স্বয়ংক্রিয়-প্রস্থান করবে grep
কমান্ড প্রয়োগ করুন:
box1% ./foo.env
hi
grep: 456: No such file or directory
যাইহোক, যদি আমি source
স্ক্রিপ্ট, এটি আমার বর্তমান শেল থেকে বেরিয়ে আসে, শুধু স্ক্রিপ্টটিকে সোর্স করা হয় না:
box1% ssh box2
box2% source ./foo.env
hi
grep: 456: No such file or directory
Connection to box2 closed.
box1%
যদি আমি মুছে ফেলা set -e
,
#!/bin/bash
# foo2.env
echo "hi"
grep 123 456 # this command will fail (I don't have a file named "456")
echo "should not reach here"
তাহলে এটি স্বয়ং-প্রস্থান বা স্বয়ংক্রিয়-ফেরত দেয় না source
ডি স্ক্রিপ্ট এ সব:
box1% ssh box2
box2% source ./foo2.env
hi
grep: 456: No such file or directory
should not reach here
box2%
আমি এখনো পর্যন্ত পাওয়া একমাত্র workaround একটি যোগ করা হয় return
স্ক্রিপ্ট কোড প্রতিটি লাইন অভিব্যক্তি, যেমন।
box1% cat foo3.env
#!/bin/bash
# foo3.env - works, but is cumbersome
echo "hi" || return
grep 123 456 || return
echo "should not reach here" || return
box1% source foo3.env
hi
grep: 456: No such file or directory
box1%
জন্য অন্য উপায় আছে source
ডি স্ক্রিপ্ট, কিভাবে অনুরূপ set -e
অ- source
ডি বেশী?
read
।