Hướng dẫn how to pass python output to shell script - cách chuyển đầu ra của python sang shell script

sys.exit(myString) không có nghĩa là "trả về chuỗi này". Nếu bạn chuyển một chuỗi sang sys.exit, sys.exit sẽ coi chuỗi đó là một thông báo lỗi và nó sẽ viết chuỗi đó thành

output=$((your command here) 2> &1)
0. Khái niệm gần nhất với giá trị trả về cho toàn bộ chương trình là trạng thái thoát của nó, phải là một số nguyên.

Nếu bạn muốn nắm bắt đầu ra được viết cho Stderr, bạn có thể làm một cái gì đó như

python yourscript 2> return_file

Bạn có thể làm một cái gì đó tương tự trong tập lệnh bash của bạn

output=$((your command here) 2> &1)

Tuy nhiên, điều này không được đảm bảo chỉ nắm bắt giá trị được chuyển cho sys.exit. Bất cứ điều gì khác được viết cho Stderr cũng sẽ được ghi lại, có thể bao gồm đầu ra ghi nhật ký hoặc dấu vết ngăn xếp.

example:

test.py

print "something"
exit('ohoh') 

t.sh

va=$(python test.py 2>&1)                                                                                                                    
mkdir $va

output=$((your command here) 2> &1)
2

chỉnh sửa

Không chắc chắn tại sao nhưng trong trường hợp đó, tôi sẽ viết một kịch bản chính và hai kịch bản khác ... trộn Python và bash là vô nghĩa trừ khi bạn thực sự cần.

import script1
import script2

if __name__ == '__main__':
    filename = script1.run(sys.args)
    script2.run(filename)

Phương pháp không hoạt động

Dưới đây là mã thực tế của tôi.

Code::

export L=128

cd /home/betafish/Desktop/Cpp_codes/gnuradio/acoustic
echo "$("pwd")"
echo "$L"
exec python ofdm_acoustic.py "$L"

Và tệp python khác là

Code::

#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Ofdm Acoustic
# Generated: Wed Dec  1 18:17:52 2010
##################################################

from gnuradio import audio
from gnuradio import blks2
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.wxgui import constsink_gl
from gnuradio.wxgui import fftsink2
from grc_gnuradio import blks2 as grc_blks2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx

class ofdm_acoustic(grc_wxgui.top_block_gui):

	def __init__(self):
		grc_wxgui.top_block_gui.__init__(self, title="Ofdm Acoustic")
		_icon_path = "/home/betafish/.local/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
		self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

		##################################################
		# Variables
		##################################################
		self.samp_rate = samp_rate = 32000

		##################################################
		# Blocks
		##################################################
		self.audio_sink_0 = audio.sink(48000, "", True)
		self.blks2_ofdm_demod_0 = grc_blks2.packet_demod_f(blks2.ofdm_demod(
				options=grc_blks2.options(
					modulation="qpsk",
					fft_length=512,
					occupied_tones=200,
					cp_length=[COLOR="rgb(255, 140, 0)"]L[/COLOR],
					snr=10,
					log=None,
					verbose=None,
				),
				callback=lambda ok, payload: self.blks2_ofdm_demod_0.recv_pkt(ok, payload),
			),
		)
		self.blks2_ofdm_mod_0 = grc_blks2.packet_mod_f(blks2.ofdm_mod(
				options=grc_blks2.options(
					modulation="qpsk",
					fft_length=512,
					occupied_tones=200,
					cp_length=L,
					pad_for_usrp=False,
					log=None,
					verbose=None,
				),
			),
			payload_length=0,
		)
		self.gr_complex_to_float_0 = gr.complex_to_float(1)
		self.gr_throttle_0 = gr.throttle(gr.sizeof_float*1, samp_rate)
		self.gr_wavfile_sink_0 = gr.wavfile_sink("/home/betafish/Desktop/Cpp_codes/gnuradio/acoustic/data_rx", 1, samp_rate, 8)
		self.gr_wavfile_source_0 = gr.wavfile_source("/home/betafish/Desktop/Cpp_codes/gnuradio/acoustic/data_tx.wav", True)
		self.wxgui_constellationsink2_0 = constsink_gl.const_sink_c(
			self.GetWin(),
			title="Constellation Plot",
			sample_rate=samp_rate,
			frame_rate=5,
			const_size=2048,
			M=4,
			theta=0,
			alpha=0.005,
			fmax=0.06,
			mu=0.5,
			gain_mu=0.005,
			symbol_rate=samp_rate/4.,
			omega_limit=0.005,
		)
		self.Add(self.wxgui_constellationsink2_0.win)
		self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
			self.GetWin(),
			baseband_freq=9000,
			y_per_div=10,
			y_divs=10,
			ref_level=50,
			sample_rate=samp_rate,
			fft_size=1024,
			fft_rate=30,
			average=False,
			avg_alpha=None,
			title="FFT Plot",
			peak_hold=False,
		)
		self.Add(self.wxgui_fftsink2_0.win)

		##################################################
		# Connections
		##################################################
		self.connect((self.gr_wavfile_source_0, 0), (self.gr_throttle_0, 0))
		self.connect((self.gr_throttle_0, 0), (self.blks2_ofdm_mod_0, 0))
		self.connect((self.gr_complex_to_float_0, 0), (self.audio_sink_0, 0))
		self.connect((self.gr_complex_to_float_0, 1), (self.audio_sink_0, 1))
		self.connect((self.blks2_ofdm_mod_0, 0), (self.wxgui_fftsink2_0, 0))
		self.connect((self.blks2_ofdm_mod_0, 0), (self.wxgui_constellationsink2_0, 0))
		self.connect((self.blks2_ofdm_mod_0, 0), (self.gr_complex_to_float_0, 0))
		self.connect((self.blks2_ofdm_mod_0, 0), (self.blks2_ofdm_demod_0, 0))
		self.connect((self.blks2_ofdm_demod_0, 0), (self.gr_wavfile_sink_0, 0))

	def set_samp_rate(self, samp_rate):
		self.samp_rate = samp_rate
		self.wxgui_constellationsink2_0.set_sample_rate(self.samp_rate)
		self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate)

if __name__ == '__main__':
	parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
	(options, args) = parser.parse_args()
	tb = ofdm_acoustic()
	tb.Run(True)

Tôi đã sử dụng L trong các không gian được đánh dấu màu đỏ

Làm thế nào để bạn chuyển đầu ra của tập lệnh Python cho một biến shell?

Viết mã python của bạn vào a. Tệp py và sau đó chạy nó bằng shell của bạn bằng cách nhập 'python fileName.py' ...
var=`produce_output.py`.
# hoặc bạn có thể sử dụng $ () thay vì `backticks`.
# Nếu đó là những gì bạn tham gia ..
# Điều này giả định rằng bạn muốn đầu ra tiêu chuẩn ..
# Bạn cũng có thể chuyển hướng lỗi tiêu chuẩn theo tiêu chuẩn ..

Làm cách nào để chạy một chương trình python trong script shell?

Chạy một tập lệnh mở thiết bị đầu cuối bằng cách tìm kiếm nó trong bảng điều khiển hoặc nhấn Ctrl + Alt + T.Điều hướng thiết bị đầu cuối đến thư mục nơi tập lệnh được đặt bằng lệnh CD.Gõ python scriptName.py trong thiết bị đầu cuối để thực thi tập lệnh.Open the terminal by searching for it in the dashboard or pressing Ctrl + Alt + T . Navigate the terminal to the directory where the script is located using the cd command. Type python SCRIPTNAME.py in the terminal to execute the script.

Chúng ta có thể viết mã python trong script shell không?

Thay vì viết toàn bộ mã python trong script shell, bạn có thể nhúng mã python bên trong tập lệnh bash shell bằng tài liệu ở đây.Đầu tiên hãy viết mã Python hoạt động.Để chứng minh, hãy để tôi viết một đoạn mã Python nhỏ chỉ đơn giản là có được thuộc tính tệp của một tên tệp đã cho.you can embed python code inside the bash shell script using here doc. First lets write a working python code. To demonstrate, let me write a small piece of Python code that just simply gets the file properties of a given file name.

Làm thế nào để bạn có được đầu ra của tập lệnh shell trong một tệp?

Có nhiều cách để chuyển hướng đầu ra từ các tập lệnh và lệnh shell ...
Chuyển hướng stdout.....
Chuyển hướng Stderr.....
Gửi stdout và stderr đến cùng một tệp.....
Chuyển hướng đầu ra, nhưng nối các tập tin.....
Chuyển hướng đến một quy trình khác hoặc không đến đâu.....
Sử dụng chuyển hướng trong một kịch bản ..