जवाबों:
इस आदमी की कोशिश करो =):
sed -n 'line_num p' | bash
या
"$(sed -n 'line_num p')"
line_numऔर pउदाहरण के लिए यदि line_num123 है, तो आप कर सकते हैं sed -n 123p | bash। और अगर shपर्याप्त है, तो shइसके बजाय बस का उपयोग करें bash।
sed -n 'line_num p' | shएक और समाधान हो सकता है? क्या यह अधिक अनुकूलता है?
shवास्तव में शेल क्या है। डेबियन (और व्युत्पन्न) सिस्टम shपर आमतौर पर है dash। यदि स्क्रिप्ट के लिए लिखा गया है dash (या अन्यथा पोर्टेबल सिंटैक्स पर निर्भर करता है) तो शायद, हाँ, लेकिन अगर यह लिखा जाता है bashतो लगभग निश्चित रूप से नहीं।
historyऔर मैं देखूं कि मैं लाइन 900 को चलाना चाहता हूं, तो क्या मैं किसी तरह लाइन 900 चला सकता हूं?
यदि आप यह अंतःक्रियात्मक रूप से कर रहे हैं, तो आप लाइन को बैश इतिहास में लिख सकते हैं:
history -s "$(sed -n 'line_num p')"
फिर ↑Enterलाइन को रीडलाइन बफर में सम्मिलित करने के लिए दबाएं , और इसे निष्पादित करें; इससे पहले कि आपको बहुत देर हो जाए लाइन में झांकने का मौका दें।
man history
historyएक बिल्ट-इन है, इसलिए इसे help history(या man bash, लेकिन यह बहुत अधिक पढ़ने का) दस्तावेज है । उपरोक्त उद्धरण, history -s"एआरजी को इतिहास सूची में एकल प्रविष्टि के रूप में जोड़ देगा"
तुम कर सकते हो...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
वह $NUMशेल चर में आपकी स्क्रिप्ट से केवल पंक्ति प्राप्त करेगा $lineऔर फिर वर्तमान शेल में एक कमांड के रूप में इसका मूल्यांकन करेगा।
ऐसा करने का एक और तरीका इस तरह दिख सकता है:
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
eval।
gnu sedहै eझंडा कुछ की तरह तो sed "${NUM}"'!d;s/^//e;q'भी काम होगा