একটি পরিবর্তনশীল আউটপুট পুনঃনির্দেশ?


9

আমি দুটি কমান্ড থেকে ভেরিয়েবলের আউটপুটটি পরিচালনা করতে আগ্রহী। আমি আউটপুটটি স্ক্রিনে প্রদর্শিত হতে চাই না, বরং এটির পরিবর্তে আমার স্ক্রিপ্টের মধ্যে একটি ভেরিয়েবল বরাদ্দ করা হয়েছে যাতে আমি এটি আবার ব্যবহার করতে পারি।

আমি যা করছি তা হ'ল নীচে দেখানো কমান্ডগুলি ব্যবহার করে একটি ডিরেক্টরি থেকে ফাইলের আকার প্রাপ্ত হচ্ছে:

ls -l /var/spool | wc -c

এই কমান্ডটি আমাকে বাইট আকারে ফাইলের আকার দেয় এবং একটি পূর্ণসংখ্যা হিসাবে আউটপুট প্রদর্শন করে। আমি এই পূর্ণসংখ্যাটি আমার পছন্দসই একটি ভেরিয়েবলের জন্য নির্ধারিত করতে আগ্রহী যাতে আমি এটির পরে অন্য পরিবর্তকের সাথে তুলনা করতে পারি

এটি কাজ করে বলে মনে হচ্ছে না:

size = ls -l /var/spool | wc -c

পুনর্নির্দেশ কাজ করবে?

এটার মত....

ls -l /var/spool | wc -c > size

যেভাবেই হোক আমি এই সংখ্যাসূচক আউটপুটটি কোনও ভেরিয়েবলের জন্য বরাদ্দ করা এবং স্ক্রিনে প্রদর্শিত না হওয়া চাই।

কোন পরামর্শ খুব স্বাগত জানানো হয়!

উত্তর:


12

এটা বেশ সোজা মনে হচ্ছে।

romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476

শেল সিনট্যাক্স কার্যকর $(command)করে commandএবং স্ট্যান্ডার্ড আউটপুট দেয়: কেবল এটি একটি ভেরিয়েবলে সংরক্ষণ করুন।

আপনার আদেশ:

ls -l /var/spool | wc -c > size 

sizeবর্তমান ডিরেক্টরিতে নাম্বার করা একটি ফাইল তৈরি করবে (নম্বর এবং একটি নতুন লাইন রয়েছে)।


অথবা কমান্ড ব্যাক উদ্ধৃতি: size=`ls -l /var/spool | wc -c`। আপনার উত্তরে এই ফর্ম্যাটটি ব্যবহার করুন: "double` আকার = s ls -l / var / spool | wc -c` `` "ডাবল উদ্ধৃতি ছাড়াই;)
20sαғ

1
@KasiyA আমি ব্যবহার করতে পছন্দ $(): কারণের জন্য এখানে ব্যাখ্যা stackoverflow.com/a/9449788/2907484 :-)
Rmano

1
(1) করার পরে ls -l /var/spool | wc -c > size_file, আপনি পারে read size_var < size_file। (২) আরও দেখুন $ () সর্বদা কমান্ড প্রতিস্থাপনের জন্য ব্যাকটিকগুলি প্রতিস্থাপন করতে পারে?
জি-ম্যান

6

আমি রিমানোর উত্তরের প্রস্তাবিত সমাধানটি পছন্দ করি তবে আপনি যদি কেবল পুনঃনির্দেশ ব্যবহার করতে চান:

read size < <(ls -l /var/spool | wc -c)

1
শুধুমাত্র ফেরৎ ব্যবহারের প্রধান সুবিধা (- আপনি আপনার স্ক্রিপ্ট নল প্রক্রিয়াকরণের জন্য সেট আপ আছে তার উপর নির্ভর করে এটি ত্রুটি গেলা না set -e, set -o pipefail, ইত্যাদি)। সুতরাং আপনি যদি $(…)স্ক্রিপ্টটি ব্যবহার করেন সর্বদা অবিরত থাকবে, তবে পুনর্নির্দেশের সাথে এটি ব্যর্থ হওয়ার জন্য সেট আপ করা যেতে পারে। (যা আপনি যা চান তা হতে পারে বা নাও পারে)।
গ্যারেট মোটনার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.