আমি ডিফল্ট ফ্যালব্যাকের সাথে ফিশ শেলের একটি পরিবর্তনশীলকে কীভাবে উল্লেখ করব


16

নিম্নলিখিত বাশের সমতুল্য মাছের শেলটি কী :

echo ${TEST:-1}

ব্যাশে এটি টেস্টের মান প্রিন্ট করে যদি সেখানে একটি বা 1 না থাকে।


কিছু রক্ষণাবেক্ষণকারীদের ব্যাখ্যার জন্য github.com/fish- Shell/fish- Shell/issues/… দেখুন ।
ওয়েবওয়ার্স

উত্তর:


10

আমি বিশ্বাস করি আপনার অস্থায়ী পরিবর্তনশীল (বা একটি ফাংশন) প্রয়োজন। যদি $TESTঅস্তিত্ব না থাকে তবে এটি কোনও কিছুর কাছে প্রসারিত নয়, এবং $test_orকেবল এটি রয়েছে 1। এটি করার আসল উপায়টি পাওয়া ভাল লাগবে তবে বর্তমানে বাক্য গঠনটি ইস্যু করেছে এবং বেশিরভাগ উদ্দেশ্যে এটি সত্যিই প্রয়োজন বলে মনে হচ্ছে না।

set test_or $TEST 1
echo $test_or[1]

এছাড়াও, যদি আপনি যা চান তা হ'ল $TESTএটি যদি ইতিমধ্যে বিদ্যমান না থাকে তবে এটি ব্যবহার করতে পারেন set -q

set -q TEST; or set TEST 1
echo $TEST

6

কোনও ভেরিয়েবলের রেফারেন্স দিতে এবং ইন-লাইনে একটি ডিফল্ট মান সরবরাহ করতে আপনি কন্ডিশনাল সমন্বিত কমান্ড বিকল্প ব্যবহার করতে পারেন যা echoউভয় শাখায় করে।

> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
a default value
> set someVar 42
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
42

যেহেতু এটি একধরনের ভারবোজ, সেটটি সেট না করা অবস্থায় আপনি ভেরিয়েবলটি অন্য একটি লাইনে আরম্ভ করতে পারেন।

> echo $otherVar

> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value

আপনি যদি সত্যিই কোনও ডিফল্ট ইন-লাইন প্রতিস্থাপনের ক্ষমতাটি চান তবে আপনি এটি কোনও ফাংশনে ইন্ডিরিয়ারেশন ব্যবহার করে করতে পারেন এবং তারপরে সেই ফাংশনটি কল করতে পারেন।

> function orDefault
      set -q $argv[1]; and echo $$argv[1]; or echo $argv[2]
  end
>
> echo $moreVar

> echo (orDefault moreVar 'a default value')
a default value
> set moreVar 42
> echo (orDefault moreVar 'a default value')
42
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.