এটিকে প্রসারিত / মূল্যায়ন না করে এর মধ্যে একটি ভেরিয়েবলের সাথে একটি স্ট্রিং প্রতিধ্বনি করুন [বন্ধ]


12

আমি সর্বত্র অনুসন্ধান করেছি। প্রতিধ্বনিত এবং প্রিন্ট চেষ্টা। একক এবং ডাবল উদ্ধৃতি চেষ্টা করেছেন। তবে আমি ডেটা পার্স করেছি এবং এটিকে একটি ভেরিয়েবলের জন্য নির্ধারিত করেছি এবং এর মধ্যে যদি কোনও ভেরিয়েবল থাকে তবে এটির জন্য এটি মূল্যায়ন করতে চাই। আমি তারপরে ভেরিয়েবলটি ওয়াইল্ডকার্ডের সাথে প্রতিস্থাপন করব এবং ফাইলটি অনুসন্ধান করব।

উদাহরণ:

var="file.$DATE.txt"

### Where it goes wrong-  Needs to identify that $DATE is within the $var varaible.
test=$(echo "$var"|grep '\$')
if [[ $test ]]
then
    ### I would use whatever fix is discovered here as well
    test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/')
fi

### (Actually pulling from remote machine to local)
cat $test > /tmp/temporary.file

এখানে আমার অনেক ব্যর্থতার মধ্যে কমপক্ষে একটি রয়েছে:

PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>

আমি জানি এটির সম্প্রসারণের সাথে কিছু করার আছে তবে কীভাবে এটি কার্যকর করা যায় তার কোনও ধারণা নেই। কোন সাহায্য প্রশংসা করা হবে। ধন্যবাদ!


এটি আপনার কী সমাধান দরকার? যে var একটি অ প্রসারিত থাকে $date?? ব্যবহারের জন্য: var='file.$DATE.txt'। তারিখটি প্রসারিত করার জন্য যখন ব্যবহার করা হয়? আমি নিশ্চিত যে আপনি যা জিজ্ঞাসা করছেন তা আপনাকে ব্যাখ্যা করা দরকার।

দুঃখিত, "ভেরিয়েবল" এর মধ্যে কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করতে। প্রকারভেদযুক্ত।
krmarshall87

আমি আমার দ্বিধাদ্বন্দ্বের আশেপাশে একটি উপায় খুঁজে পেয়েছিলাম যা তাত্ক্ষণিকভাবে পরিবর্তনশীল বলে মনে হয় এমন কিছু অপসারণ করে (আমার প্রথমে যত্ন নেওয়া ছাড়াই প্রয়োজন) এবং একটি ওয়াইল্ডকার্ডের সাহায্যে অদলবদল করে: sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
krmarshall87

উত্তর:


20

আপনার যদি $dateভেরিয়েবলের ভিতরে প্রয়োজন হয় :

var='file.$date.txt'

এটি চলকের ভিতরে $ রাখবে:

$ echo "$var" | grep '\$'
file.$date.txt

8

শেল প্রসারণ রোধ করতে ভেরিয়েবলের চারপাশে একক উদ্ধৃতি ব্যবহার করুন। উদাহরণ echo '$file'প্রসারিত হবে না $file

নীচে মন্তব্য করার পরে সম্পাদনা করুন:

আপনি $সাইন ইনটি দিয়ে varপরিবর্তনশীলটি এড়াতে পারবেন var="file.\$DATE.txt"


আমার এটি প্রসারিত করতে হবে তবে কেবল একটি মাত্রা। ধাপে ধাপে কাঙ্ক্ষিত ফলাফল যুক্ত করতে ভুলে গেছেন। তবে আমি চাই যে ডলার সাইন ($ DATE) এর জন্য $ ফাইলের বিষয়বস্তুগুলি মূল্যায়ন করা হোক।
krmarshall87

এটি সমাধান করার জন্য সম্পাদিত।
মুনির

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