বাশ স্ক্রিপ্টে `1 >>` এবং b 2 >> `এর অর্থ কী?


15

আমার কাছে নীচের ব্যাশ স্ক্রিপ্ট রয়েছে, যা থেকে আমি বুঝি >> একটি কমান্ডের আউটপুটকে ওভাররাইটের পরিবর্তে বিদ্যমান ফাইলটিতে সংযুক্ত করতে ব্যবহৃত হয়, তবে এই ক্ষেত্রে এটি কী করছে? এই স্ক্রিপ্টটি কিছু এক্সিপ ফাইলগুলিকে এক ফর্ম্যাট থেকে অন্য ফর্ম্যাটে রূপান্তর করতে কল করছে। প্রতিটি ফাইলের জন্য অনেক বছর রয়েছে, সুতরাং এটি ফাইলের নামটি দেখে প্রতিটি ফাইলের মধ্য দিয়ে যায় lo এছাড়াও আমি যখন এই স্ক্রিপ্টটি চালনা করি তখন আমি "দ্ব্যর্থক পুনর্নির্দেশ" পাই

#!/bin/bash
source $HOME/.bashrc

jobout=${1}
joberr=${2}

# Set some paths and prefixes

yr_bgn=2000
yr_end=2000

yr=${yr_bgn}
pth_data='/mnt/'
pth_rst='/mnt/'



while [ ${yr} -le ${yr_end} ]
do
   ./executable1 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   ./executable2 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   ./executable3 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   let yr=${yr}+1
done

আপনি কিভাবে এই স্ক্রিপ্ট কল?
হউক লেগেছে


@ হককিজিং, না হয় না প্রশ্নটি মনে হচ্ছে কাছাকাছি কিছু সম্পর্কে, তবে একই নয়
রোমিও নিনভ

@ রোমোইনোভ আপনি কি প্রাসঙ্গিক পার্থক্যটি ব্যাখ্যা করতে চান?
হউক লেগেছে

@ স্ক্রিপ্ট স্ক্রিপ্ট একটি .sh ফাইলে সংরক্ষণ করা হয়। আমি কেবল ./myscript.sh টাইপ করেছি
হারমান টুথরট

উত্তর:


19

1>>এবং 2>>নির্দিষ্ট ফাইল-বর্ণনাকারীদের জন্য পুনঃনির্দেশগুলি হয়, এক্ষেত্রে স্ট্যান্ডার্ড আউটপুট (ফাইল বর্ণনাকারী 1) এবং স্ট্যান্ডার্ড ত্রুটি (ফাইল বর্ণনাকারী 2)।

সুতরাং স্ক্রিপ্টটি সমস্ত "স্ট্যান্ডার্ড" বার্তাগুলিতে ${jobout}এবং সমস্ত ত্রুটি বার্তাগুলিতে পুনঃনির্দেশ করছে ${joberr}>>উভয় ক্ষেত্রেই ব্যবহার করা মানে সমস্ত বার্তা সংশ্লিষ্ট ফাইলগুলিতে যুক্ত হয়।

নোট করুন ${jobout}এবং ${joberr}দুটি কমান্ড-লাইন প্যারামিটারগুলি থেকে স্ক্রিপ্টে ( ${1}এবং ${2}) নিয়ে যান, যাতে আপনাকে বার্তা সংরক্ষণের জন্য যে ফাইলগুলি ব্যবহার করতে চান তা নির্দিষ্ট করতে হবে। যদি প্যারামিটারগুলি দেওয়া না হয় তবে স্ক্রিপ্টটি আপনার দেখা "অস্পষ্ট পুনঃনির্দেশ" ত্রুটি বার্তা তৈরি করবে; স্ক্রিপ্টটিতে সত্যই প্যারামিটারগুলি সরবরাহ করা হয়েছে কিনা তা যাচাই করা উচিত এবং অন্যথায় এর মতো উপযুক্ত ত্রুটি বার্তা সরবরাহ করা উচিত

if [ -z "$1" -o -z "$2" ]; then
    echo "Log files for standard and error messages must be specified"
    echo "${0} msgfile errfile"
    exit 1
fi

স্ক্রিপ্টের শুরুতে।


2

আপনার ক্ষেত্রে 1 >> বর্তমান স্টাডআউট হ্যান্ডলার থেকে ফাইলটি $ {জবআউট} 2 >> এ যুক্ত করুন >> বর্তমান স্টাডার হ্যান্ডলার থেকে $ ober জোবারের file ফাইলটিতে তথ্য যুক্ত করুন

জবআউট এবং জোবরের ফাইলগুলি হ'ল স্ক্রিপ্টের প্রথম এবং দ্বিতীয় প্যারামিটার হিসাবে সংজ্ঞায়িত


1

সেখানে স্ক্রিপ্ট পরামিতি ডেকে কোন প্যারামিটার আছেন যে $1এবং $2খালি রয়েছে এবং তাই হয় $joboutএবং $joberr

আপনার অবশ্যই স্ক্রিপ্টটি কল করতে হবে:

./myscript.sh file1 file2

>>পুনঃনির্দেশ অপারেটরগুলির পূর্বে প্যারামিটার সংখ্যার সাথে কোনও সম্পর্ক নেই ।
বার্মার

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