বাশ কমান্ড প্রতিস্থাপন কাজ করে না


-1

এই স্ক্রিপ্ট হয়:

#!/bin/bash

thedate=$(date)


var='Current date is $thedate'

echo $var

আউটপুট বর্তমান তারিখ $ তারিখ এবং আমি এটি তারিখ প্রদর্শন করতে চাই, আমি কি ভুল করেছি? কোন সাহায্য প্রশংসা করা হবে।

উত্তর:


1

সমস্যা হল যে bash আপনি ব্যবহার না হওয়া পর্যন্ত শুধুমাত্র পরিবেশ ভেরিয়েবল প্রসারিত eval, যা কমান্ড লাইনটিকে দুই বার বিশ্লেষণ করে:

eval echo $var

উল্লেখ্য যে তারিখ এবং সময় প্রদর্শিত হয় যখন বর্তমান thedate সেট করা হয়, যখন না $var রেফারেন্স করা হয়। বর্তমান সময় প্রদর্শন করার জন্য $var উল্লেখ করা হয়, আপনি প্রয়োজন: -

var='Current date is $(date)'
eval echo $var

ভেরিয়েবল ব্যবহার করা ভালো হবে না, তবে একটি ফাংশন সংজ্ঞায়িত করুন: -

cdate() { echo Current date is $(date); }
...
cdate

অবশ্যই, এটি এখনও ব্যবহার করা ভাল নয় echo, কিন্তু যাক date নিজেই অতিরিক্ত টেক্সট যোগ করুন:

cdate() { date +"Current date is %c"; }

এই হিসাবে বেশ একই বিন্যাস আউটপুট না date ডিফল্ট, কিন্তু ডিফল্ট জন্য কোন ফরম্যাট স্পেসিফিকেশন নেই।


0
var='Current date is $thedate'

ভেরিয়েবল একক উদ্ধৃতির মধ্যে প্রসারিত হয় না, তাই এটি আক্ষরিক পাঠ্য ধারণকারী একটি স্ট্রিং নির্ধারণ করে $thedate। পরিবর্তনশীল প্রসারিত আছে আপনি এখানে ডবল কোট ব্যবহার করা উচিত।

echo $var

এছাড়াও, এখানে, আপনাকে ভেরিয়েবলের চারপাশে ডাবল কোট ব্যবহার করতে হবে যাতে এটি শব্দ বিভাজন এবং পথের নাম বিস্তারের বিষয় হতে পারে, যেমন। echo "$var"। এই বিশেষ ক্ষেত্রে আপনি বেশিরভাগ উদ্ধৃতি ব্যবহার না করে দূরে যেতে পারেন, যেহেতু তারিখটিতে সম্ভবত ওয়াইল্ডকার্ড অক্ষর থাকবে না। কিন্তু উদ্ধৃতি ছাড়া, যেমন। তারিখ স্ট্রিং Fri Dec 7 20:41:21 EET 2018 হিসাবে আউটপুট হবে Fri Dec 7 20:41:21 EET 2018, অর্থাৎ, মাস নামটির পরে দুবার স্থান একক স্থানটিতে ধ্বসে ফেলা হবে।


1
আপনি ব্যবহার করেন var="Current date is $thedate", তারপর তারিখ এবং সময় সময় সেট করা হয় var সংজ্ঞায়িত করা হয়, সময় না $var রেফারেন্স করা হয়।
AFH

@ এএফএইচ, এ সময় thedate বরাদ্দ করা হয় (না var ), যেহেতু যে কমান্ড প্রতিস্থাপন হয়। আমি ঠিক কখন তারা চালাতে চান জানি না date কমান্ড, তারা না বলে, এবং এমনকি প্রসারিত না আরো তাত্ক্ষণিক সমস্যা আছে $thedate...
ilkkachu

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