2011-10-05 37 views
6

Tôi đang làm việc trên một tập lệnh shell và tôi có một số dòng mã được sao chép (sao chép được dán, giả sử).Làm thế nào để tạo một hàm trong kịch bản lệnh shell nhận các tham số?

Tôi muốn các dòng đó có chức năng. Cú pháp thích hợp để sử dụng là gì?

Và những thay đổi nào tôi thực hiện để các chức năng đó nhận được các thông số?

Đây là ví dụ.

tôi cần phải tắt chức năng này:

amount=1 
echo "The value is $amount" 
amount=2 
echo "The value is $amount" 

Into một cái gì đó như thế này:

function display_value($amount) { 
    echo "The value is $amount" 
} 

amount=1 
display_value($amount) 
amount=2 
display_value($amount) 

Nó chỉ là một ví dụ, nhưng tôi nghĩ nó đủ rõ ràng.

Xin cảm ơn trước.

Trả lời

11
function display_value() { 
    echo "The value is $1" 
} 

amount=1 
display_value $amount 
amount=2 
display_value $amount 
10

Trong tập lệnh hệ vỏ, hàm có thể chấp nhận bất kỳ số lượng thông số đầu vào nào. $ 1 là viết tắt của tham số đầu vào thứ nhất, $ 2 thứ hai và cứ tiếp tục như vậy. $ # trả về số tham số nhận được bởi hàm và $ @ trả về tất cả các tham số theo thứ tự và được phân tách bằng dấu cách.

Ví dụ:

#!/bin/sh 
    function a() { 
    echo $1 
    echo $2 
    echo $3 
    echo $# 
    echo [email protected] 
    } 

    a "m" "j" "k" 

sẽ trở lại

m 
j 
k 
3 
m j k 
Các vấn đề liên quan