Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Cách an toàn và sạch nhất để phân tích bất kỳ đầu vào nào một cách hiệu quả trong bash là ánh xạ vào một mảng,

mapfile -t -d, <<<"$(python your_script.py)"

Bây giờ bạn chỉ cần đảm bảo rằng bạn đã xuất bản dữ liệu bạn muốn đọc với Delimiter đã chọn, "," Trong ví dụ của tôi (-d chọn một dấu phân cách, -t cắt đầu vào như newlines). Các trích dẫn là không tùy chọn để đảm bảo vỏ không tách rời mọi thứ với không gian.

Nếu bạn có một bộ phận không chứa dấu phẩy, thì điều này là đủ:

print(str(your_tuple).strip('()'))

Bên dưới một số cách dễ dàng để đầu vào dễ dàng, trước khi tôi quen thuộc hơn với bash:

Cách yêu thích của tôi là đọc trực tiếp vào một danh sách:

x=($(python3 -c "print('a','b','c')"))
echo ${x[1]}
b
echo ${x[*]}
a b c

Vì lý do này, nếu my_python_function trả về một tuple, tôi sẽ sử dụng định dạng để đảm bảo rằng tôi chỉ nhận được kết quả phân định không gian:

#Assuming a tuple of length 3 is returned
#Remember to quote in case of a space in a single parameter!
print('"{}" "{}" "{}"'.format(*my_python_function())

Nếu bạn muốn điều này là chung chung, bạn sẽ cần xây dựng chuỗi định dạng:

res = my_python_function()
print(("{} "*len(res)).format(*res))

là một cách. Không cần phải lo lắng về không gian thêm, nhưng bạn có thể [: -1] trên chuỗi định dạng để loại bỏ nó.

Cuối cùng, nếu bạn đang mong đợi các đối số đa từ (nghĩa là một không gian trong một đối số duy nhất, bạn cần thêm trích dẫn và mức độ Indirection (tôi cho rằng bạn sẽ chỉ tự chạy, "an toàn", tập lệnh):

#myfile.py
res = my_python_function()
print(('"{}" '*len(res)).format(*res))

#my file.bash
eval x=($(python3 myfile.py))

Sử dụng danh sách: Danh sách giống như một mảng các mục được tạo bằng dấu ngoặc vuông ..

Chúng ta có thể trả về nhiều giá trị từ script shell không?

Các hàm script shell chỉ có thể trả về trạng thái thoát của lệnh cuối cùng được thực thi hoặc trạng thái thoát của hàm đó được chỉ định rõ ràng bằng câu lệnh trả về.multiVarFunc() function is used to take three input values and return the values to the variables dept_name, total_std and total_fac.

#!/usr/bin/env python3

& nbsp; # Xác định lớp để thông báo cho các nhân viên của lớp đối tượng: & nbsp; def__init __ (self): & nbsp; & nbsp; self.name = "mosarof karim" & nbsp; & nbsp; self.post = "Trình quản lý" & nbsp; & nbsp; self.salary = 50000
def multiVarFunc():
  # Take a string data
  dept = input("Enter department name: ")
  # Take a numeric data
  stdnum = int(input("Enter the number of total students: "))
  # Take a numeric data
  facnum = int(input("Enter the number of total faculties: "))
  # Return multiple variables
  return dept,stdnum,facnum;

& nbsp; # Xác định hàm để trả về các giá trị dưới dạng đối tượng objfunc (): & nbsp; return nhân viên ()
dept_name, total_std, total_fac = multiVarFunc()
# Print the formatted output of the return values
print("\nDepartment:%s\nTotal students:%d\nTotal faculties:%d" %(dept_name,total_std,
total_fac))

Đầu ra

& nbsp; # Gọi hàm để đặt biến đối tượng objvar = objfunc ()

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

& nbsp; # In các định dạng đầu ra được định dạng ("\ n Tên nhân viên:", objvar.name, "\ n", "Post:", objvar.post, "\ n", "Mức lương:", & nbsp; objvar.salary)

Kịch bản sau đây cho thấy cách sử dụng một tuple để trả về nhiều giá trị từ một hàm. Nếu bạn muốn trả về nhiều giá trị từ hàm, thì đây là một tùy chọn tốt hơn. Ở đây, hàm tuplefunc () được sử dụng để lấy bốn giá trị đầu vào từ người dùng và trả về các giá trị dưới dạng bộ xử lý cho người gọi. Các giá trị trả về sẽ được lưu trữ trong một biến tuple có tên Tuplevar và các giá trị sẽ được in sau.tupleFunc() function is used to take four input values from the user and return the values as a tuple to the caller. The return values will be stored in a tuple variable named tupleVar and the values will be printed later.

#!/usr/bin/env python3

# Xác định chức năng để trả về nhiều biến TupleFunc (): & nbsp; & nbsp;# Lấy dữ liệu chuỗi & nbsp; & nbsp; stdid = input ("Nhập id sinh viên:") & nbsp; & nbsp;# Lấy dữ liệu chuỗi & nbsp; & nbsp; stdname = input ("Nhập tên học sinh:") & nbsp; & nbsp;# Lấy dữ liệu số nguyên & nbsp; & nbsp; stdbatch = int (input ("nhập lô số:")) & nbsp; & nbsp;# Lấy dữ liệu float & nbsp; & nbsp; stdcgpa = float (input ("nhập cgpa:")) & nbsp; & nbsp;# trả về nhiều biến dưới dạng Tuple & nbsp; & nbsp; return (stdid, stdname, stdbatch, stdcgpa)
def tupleFunc():
   # Take a string data
   stdID = input("Enter the student Id:")
   # Take a string data
   stdName = input("Enter the student name: ")
   # Take a integer data
   stdBatch = int(input("Enter the batch No: "))
   # Take a float data
   stdCGPA = float(input("Enter the CGPA: "))
   # Return multiple variables as a tuple
   return (stdID,stdName,stdBatch,stdCGPA)

# Gọi hàm và lưu trữ các giá trị trả về trong tuplevar = tuplefunc ()# in đầu ra được định dạng của tupleprint ("\ n id:%s \ n Tên:%s \ n 4.2f " %(tuplevar [0], tuplevar [1], tuplevar [2], tuplevar [3])))
tupleVar = tupleFunc()
# Print the formatted output of the tuple
print("\n ID:%s\n Name:%s\n Batch:%d\n CGPA:%4.2f" %(tupleVar[0],tupleVar[1],tupleVar[2],
tupleVar[3]))

Đầu ra

Bốn giá trị đầu vào được lấy làm giá trị đầu ra đầu vào và được định dạng sau đó được in.

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Ví dụ 3: Trả về nhiều giá trị từ hàm bằng danh sách

Tập lệnh sau đây cho thấy cách sử dụng danh sách để trả về nhiều giá trị từ một hàm. Đây là một tùy chọn khác để trả về nhiều giá trị từ một hàm. Hàm ListFunc () được sử dụng trong tập lệnh để lấy hai số nguyên từ người dùng và tính toán bổ sung, trừ, nhân và chia các số này. Tiếp theo, bốn kết quả này được trả về dưới dạng danh sách từ chức năng. Biến danh sách, ListVar được sử dụng để lưu trữ các giá trị trả về và in các giá trị.listFunc() function is used in the script to take two integer numbers from the user and calculate the addition, subtraction, multiplication, and division of these numbers. Next, these four results are returned as a list from the function. The list variable, listVar is used to store the return values and print the values.

#!/usr/bin/env python3

# Xác định chức năng để trả về nhiều biến TupleFunc (): & nbsp; & nbsp;# Lấy dữ liệu chuỗi & nbsp; & nbsp; stdid = input ("Nhập id sinh viên:") & nbsp; & nbsp;# Lấy dữ liệu chuỗi & nbsp; & nbsp; stdname = input ("Nhập tên học sinh:") & nbsp; & nbsp;# Lấy dữ liệu số nguyên & nbsp; & nbsp; stdbatch = int (input ("nhập lô số:")) & nbsp; & nbsp;# Lấy dữ liệu float & nbsp; & nbsp; stdcgpa = float (input ("nhập cgpa:")) & nbsp; & nbsp;# trả về nhiều biến dưới dạng Tuple & nbsp; & nbsp; return (stdid, stdname, stdbatch, stdcgpa)# Define function to return multiple values as a list
def listFunc():
  # Take a numeric data
  number1 = float(input("Enter any number:"))
  # Take a numeric data
  number2 = float(input("Enter any number:"))

# Gọi hàm và lưu trữ các giá trị trả về trong tuplevar = tuplefunc ()# in đầu ra được định dạng của tupleprint ("\ n id:%s \ n Tên:%s \ n 4.2f " %(tuplevar [0], tuplevar [1], tuplevar [2], tuplevar [3])))= number1 + number2
  subtraction = number1 - number2
  multiplication = number1 * number2
  division = number1 / number2

Đầu ra# Return multiple variables as a list
  return [number1, number2, addition, subtraction, multiplication, division]

Bốn giá trị đầu vào được lấy làm giá trị đầu ra đầu vào và được định dạng sau đó được in.# Call the function and store the return values in a tuple
listVar = listFunc()
# Print the formatted output of the list data
print("\n%5.2f + %5.2f = %5.2f" %(listVar[0], listVar[1], listVar[2]))
print("%5.2f - %5.2f = %5.2f" %(listVar[0], listVar[1], listVar[3]))
print("%5.2f x %5.2f = %5.2f" %(listVar[0], listVar[1], listVar[4]))
print("%5.2f / %5.2f = %5.2f" %(listVar[0], listVar[1], listVar[5]))

Đầu ra

Bốn giá trị đầu vào được lấy làm giá trị đầu ra đầu vào và được định dạng sau đó được in.

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Ví dụ 3: Trả về nhiều giá trị từ hàm bằng danh sách

Tập lệnh sau đây cho thấy cách sử dụng danh sách để trả về nhiều giá trị từ một hàm. Đây là một tùy chọn khác để trả về nhiều giá trị từ một hàm. Hàm ListFunc () được sử dụng trong tập lệnh để lấy hai số nguyên từ người dùng và tính toán bổ sung, trừ, nhân và chia các số này. Tiếp theo, bốn kết quả này được trả về dưới dạng danh sách từ chức năng. Biến danh sách, ListVar được sử dụng để lưu trữ các giá trị trả về và in các giá trị.dictVar is declared inside the function. Three values are assigned to the variable and return the dicVar to the caller. Next, the dictionary values are printed.

& nbsp; # Xác định chức năng để trả về nhiều giá trị dưới dạng ListDef ListFunc (): & nbsp; # Lấy dữ liệu số & nbsp; number1 = float (input ("nhập bất kỳ số nào:")) & nbsp; # Lấy dữ liệu số & nbsp; number2 = float (input ("nhập bất kỳ số nào:"))
# Define function to return the multiple values as a dictionary
  def dictFunc():
  # Declare a dictionary variable
  dictVar = dict();
  # Assign some values
  dictVar['name'] = "Kelli Ali"
  dictVar['age']   = 46
  dictVar['profession'] = 'Singer'
  # Return the dictionary as return values
  return dictVar

& nbsp; & nbsp; bổ sung = number1 + number2 & nbsp; trừ = number1 - number2 & nbsp; phép nhân = number1 * number2 & nbsp; Division = number1 / number2# Call the function and store the return values in a dictionary variable
dictValues = dictFunc()
# Print the dictionary values
print("The values of dictionary are:\n", dictValues)

Đầu ra

Bốn giá trị đầu vào được lấy làm giá trị đầu ra đầu vào và được định dạng sau đó được in.

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Ví dụ 3: Trả về nhiều giá trị từ hàm bằng danh sách

Tập lệnh sau đây cho thấy cách sử dụng danh sách để trả về nhiều giá trị từ một hàm. Đây là một tùy chọn khác để trả về nhiều giá trị từ một hàm. Hàm ListFunc () được sử dụng trong tập lệnh để lấy hai số nguyên từ người dùng và tính toán bổ sung, trừ, nhân và chia các số này. Tiếp theo, bốn kết quả này được trả về dưới dạng danh sách từ chức năng. Biến danh sách, ListVar được sử dụng để lưu trữ các giá trị trả về và in các giá trị.objFunc() function calls, the function initializes the object from the Employees class and returns the object to the caller. Next, the property values of the object will be printed.

#!/usr/bin/env python3

& nbsp; # Xác định chức năng để trả về nhiều giá trị dưới dạng ListDef ListFunc (): & nbsp; # Lấy dữ liệu số & nbsp; number1 = float (input ("nhập bất kỳ số nào:")) & nbsp; # Lấy dữ liệu số & nbsp; number2 = float (input ("nhập bất kỳ số nào:"))# Define the class to intialize the object
class Employees:
 def __init__(self):
   self.name = "Mosarof Karim"
   self.post = "Manager"
   self.salary = 50000

& nbsp; & nbsp; bổ sung = number1 + number2 & nbsp; trừ = number1 - number2 & nbsp; phép nhân = number1 * number2 & nbsp; Division = number1 / number2# Define the function to return values as an object
def objFunc():
 return Employees()

& nbsp; # Gọi hàm để đặt biến đối tượng objvar = objfunc ()# Call the function to set the object variable
objVar = objFunc()

& nbsp; # In các định dạng đầu ra được định dạng ("\ n Tên nhân viên:", objvar.name, "\ n", "Post:", objvar.post, "\ n", "Mức lương:", & nbsp; objvar.salary)# Print the formatted output
print("\n Employee Name:", objVar.name,"\n","Post:",objVar.post,"\n","Salary:",
 objVar.salary)

Đầu ra

Đầu ra sau sẽ xuất hiện sau khi chạy tập lệnh.

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Sự kết luận

Nhiều giá trị trả về từ một hàm có thể được sử dụng trong tập lệnh cho các mục đích khác nhau. Hướng dẫn này cho thấy một số cách khác nhau để trả về nhiều giá trị từ một hàm trong Python.

Xem video tác giả: tại đây

Thông tin về các Tác giả

Hướng dẫn return multiple values from python to shell script - trả về nhiều giá trị từ python sang shell script

Tôi là một huấn luyện viên của các khóa học lập trình web. Tôi thích viết bài báo hoặc hướng dẫn về các chủ đề CNTT khác nhau. Tôi có một kênh YouTube trong đó nhiều loại hướng dẫn dựa trên Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel, v.v.

Làm cách nào để trả về nhiều giá trị từ tập lệnh Python?

Sử dụng đối tượng: Điều này tương tự như C/C ++ và Java, chúng ta có thể tạo một lớp (trong C, Struct) để giữ nhiều giá trị và trả về một đối tượng của lớp. ....
Sử dụng tuple: Một tuple là một chuỗi các mục được phân tách bằng dấu phẩy. ....
Sử dụng danh sách: Danh sách giống như một mảng các mục được tạo bằng dấu ngoặc vuông ..

Chúng ta có thể trả về nhiều giá trị từ script shell không?

Các hàm script shell chỉ có thể trả về trạng thái thoát của lệnh cuối cùng được thực thi hoặc trạng thái thoát của hàm đó được chỉ định rõ ràng bằng câu lệnh trả về.

Có thể trả về nhiều giá trị trong Python?

Bạn có thể trả về nhiều giá trị từ một hàm trong Python.Để làm như vậy, hãy trả về một cấu trúc dữ liệu chứa nhiều giá trị, như một danh sách chứa số dặm để chạy mỗi tuần.Các cấu trúc dữ liệu trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, có thể được trả về từ các chức năng.. To do so, return a data structure that contains multiple values, like a list containing the number of miles to run each week. Data structures in Python are used to store collections of data, which can be returned from functions.

Hàm bash có thể trả về nhiều giá trị không?

Ví dụ: Hàm bash trả về nhiều giá trị, được truyền qua thay thế lệnh, với lệnh đọc và ở đây chuỗi trong tập lệnh gọi #Bash #Bash_Exemplar · GitHub.Bash function returns multiple values, passed via command substitution, with a READ command and Here string in calling script #bash #bash_exemplar · GitHub.