রানটাইম কমান্ডের প্রতিটি আউটপুট উপসর্গ


16

আমি একটি মডুলার স্ক্রিপ্ট তৈরি করার চেষ্টা করছি। আমার কাছে বেশ কয়েকটি স্ক্রিপ্ট / কমান্ড রয়েছে যা একক স্ক্রিপ্ট থেকে ডাকা হয়েছিল।
আমি প্রতিটি পৃথক কমান্ডের আউটপুট উপসর্গ করতে চাই।

Examle:

আমার ফাইলগুলি allcommands.sh / কমান্ড 1.sh / কমান্ড 2.sh

কমান্ড 1.sh আউটপুট
file exists
file moved

কমান্ড 2.sh আউটপুট
file copied
file emptied

allcommands.sh স্ক্রিপ্টস কমান্ড 1.sh এবং কমান্ড 2.sh চালায়

আমি এই দুটি স্ক্রিপ্ট এর প্রতিটি আউটপুট উপসর্গ করতে চান:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied


প্রতিটি কমান্ড এটি দিয়ে পাইপ চালানোর চেষ্টা করুনsed "s/\^/command1 /"
j_kubik

আমি যে তথ্য দিই তার সাথে দয়া করে একটি উদাহরণ দিন। আমি sedকার্যকারিতাটি সত্যই বুঝতে পারি না । আমি দুঃখিত.
ইভান ডোকভ

উত্তর:


21

আমি ধরে নিয়েছি যে আপনি আপনার সমস্ত কম্যান্ডস.এস-এ যা করছেন তা হ'ল:

command1.sh
command2.sh

শুধু এটির সাথে সম্পর্কিত

command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"

9

এর একটি ন্যূনতম উদাহরণ allcommands.sh:

#!/bin/bash
for i in command{1,2}.sh; do
    ./"$i" | sed 's/^/['"${i%.sh}"'] /'
done

সঙ্গে command1.shএবং command2.shএক্সিকিউটেবল এবং একই ডিরেক্টরির মধ্যে মাত্র echoচেয়েছিলেন স্ট্রিং ing, এই শেল আউটপুট দেয়:

$ ./command1.sh 
file exists
file moved
$ ./command2.sh 
file copied
file emptied
$ ./allcommands.sh 
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied

দ্রুত sedভাঙ্গন

sed 's/^/['"${i%.sh}"'] /'
  • s/ "regexp প্যাটার্ন ম্যাচ এবং প্রতিস্থাপন" মোডে প্রবেশ করে
  • ^/ মানে "প্রতিটি লাইনের শুরুতে মেলে"
  • ${i%.sh}শেল প্রসঙ্গে ঘটে এবং এর অর্থ " $i, তবে প্রত্যয়টি প্রত্যাহার করুন .sh"
  • ['"${i%.sh}"'] /প্রথমে একটি প্রিন্ট করে [, তারপরে $iশেল থেকে ভেরিয়েবলটি ধরতে উদ্ধৃত প্রসঙ্গটি প্রস্থান করে , তারপরে ]এবং একটি স্থান দিয়ে শেষ করতে পুনরায় প্রবেশ করে ।

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