रनटाइम पर एक कमांड के प्रत्येक आउटपुट के लिए उपसर्ग


16

मैं एक मॉड्यूलर स्क्रिप्ट बनाने की कोशिश कर रहा हूं। मेरे पास कई स्क्रिप्ट / कमांड हैं जिन्हें एक ही स्क्रिप्ट से कहा जाता है।
मैं प्रत्येक अलग कमांड के आउटपुट को उपसर्ग करना चाहता हूं।

examle:

मेरी फाइलें allcommands.sh / command1.sh / command2.sh हैं

कमांड 1.श आउटपुट
file exists
file moved

Command2.sh आउटपुट
file copied
file emptied

allcommands.sh स्क्रिप्ट चलाता command1.sh और command2.sh

मैं इन दोनों लिपियों के प्रत्येक आउटपुट को इस तरह से उपसर्ग करना चाहता हूं:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied


प्रत्येक कमांड को इसके माध्यम से चलाने की कोशिश करेंsed "s/\^/command1 /"
j_kubik

कृपया मुझे जो जानकारी दें, उसके साथ एक उदाहरण दें। मैं वास्तव में sedकार्यक्षमता को नहीं समझता । मुझे माफ कर दो।
इवान डोकोव

जवाबों:


21

मुझे लगता है कि आप अपने allcommands.sh में क्या कर रहे हैं:

command1.sh
command2.sh

बस इसके साथ relace करते हैं

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वांछित स्ट्रिंग्स को निगलना, यह शेल आउटपुट देता है:

$ ./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/ "रेगेक्सप पैटर्न मैच और रिप्लेस" मोड में प्रवेश करता है
  • ^/ "हर लाइन की शुरुआत से मेल खाता है"
  • ${i%.sh}शेल संदर्भ में होता है और इसका अर्थ है " $i, लेकिन प्रत्यय पट्टी .sh"
  • ['"${i%.sh}"'] /पहले एक जगह को प्रिंट करता है [, फिर $iशेल से चर को हथियाने के लिए उद्धृत संदर्भ से बाहर निकलता है , फिर ]एक और एक स्थान के साथ समाप्त करने के लिए फिर से प्रवेश करता है।

स्पष्टीकरण के लिए धन्यवाद। आपका उत्तर वास्तव में मददगार था, लेकिन @ j_kubik का उदाहरण सिर्फ वही था जिसकी मुझे आवश्यकता थी।
इवान डोकोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.