একটি পরিবর্তনশীল মধ্যে পাইপ (|) কীভাবে সংরক্ষণ করবেন?


12

ধারণাটি হ'ল এটি ... কমান্ডের পাইপ হিসাবে ব্যবহার করা। উদাহরণস্বরূপ: বলুন যে এখানে এমন এক ধরণের দীর্ঘ পথ রয়েছে যা পুনরায় টাইপ করতে হবে, তারপরে একটি পাইপ এবং একটি দ্বিতীয় প্রোগ্রাম, অর্থাৎ

"directory1/directory2/direcotry3/file.dat | less -I "

আমি চাই যে অংশটি একটি ভেরিয়েবলের মধ্যে সঞ্চয় করা থাকে, সুতরাং এটি এটি ব্যবহার করা যেতে পারে:

r="directory1/directory2/direcotry3 \| less -I -p "
$ cat path1/path2/$r <searchterm>

পরিবর্তে, আমি পেতে

cat: invalid option -- I
Try `cat --help' for more information.

... মানে পাইপ পরিষ্কারভাবে কাজ করে নি।


1
আপনি যখন করতে পারেন eval, সাধারণত আপনি একটি ফাংশন করেন।
frostschutz

উত্তর:


21

ভেরিয়েবলগুলি প্রসারণের পরে কমান্ড লাইনের সম্পূর্ণ পুনরায় ব্যাখ্যা করে না b এটি জোর করার জন্য, evalসামনে রাখুন:

r="directory1/directory2/direcotry3/file.dat | less -I "
eval "cat path1/path2/$r"

তবুও, এটি করার জন্য আরও মার্জিত উপায় রয়েছে (উপকরণ, ফাংশন ইত্যাদি)।


8

আপনি কোড এবং ডেটা মেশানোর চেষ্টা করছেন যা কোনও ভাল ধারণা নয়। পরিবর্তে, একটি ফাংশন সংজ্ঞায়িত করুন যা কোনও ফাইল (ডিরেক্টরি?) নামটি আর্গুমেন্ট হিসাবে গ্রহণ করে এবং এর সাথে প্রদর্শন করে less

view () {
    less -I -p "$2" $1
}

view directory1/directory2/directory3 <searchterm>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.