Cách sử dụng phần mở rộng $ () và $ {} trong tập lệnh Shell

How Use Expansions Shell Script



Nếu bạn đang sử dụng hệ thống Linux, bạn có thể đã biết giao diện shell quan trọng như thế nào để tương tác với hệ thống của bạn. Trên hầu hết các bản phân phối Linux, Bash là trình bao mặc định mà chúng tôi sử dụng để chạy các lệnh và thực thi các tập lệnh. Tập lệnh shell là một tập hợp các lệnh, khi được thực thi, được sử dụng để thực hiện (các) chức năng hữu ích trên Linux. Tệp .sh này, được viết bởi người dùng, chứa tất cả các lệnh được sử dụng để thực hiện một tác vụ để chúng ta không phải chạy các lệnh đó theo cách thủ công, từng lệnh một.

Trong hướng dẫn này, chúng tôi sẽ giải thích hai trong số các mở rộng bash hữu ích nhất được sử dụng trong các tập lệnh shell:







  • $ () - lệnh thay thế
  • $ {} - thay thế tham số / mở rộng biến

Việc mở rộng trong Shell được thực hiện trên tập lệnh sau khi nó đã được chia thành các mã thông báo. Mã thông báo là một chuỗi các ký tự được coi là một đơn vị duy nhất bởi trình bao. Nó có thể là một từ hoặc một toán tử.



Chúng tôi đã chạy tất cả các ví dụ và tập lệnh được đề cập trong bài viết này trên hệ thống Debian 10 Buster. Tuy nhiên, bạn có thể dễ dàng sao chép chúng trên hầu hết các trình bao Linux. Chúng tôi đang sử dụng dòng lệnh Debian mặc định, Terminal, cho hướng dẫn này. Trên Debian, bạn có thể truy cập nó thông qua thanh tìm kiếm của Trình khởi chạy ứng dụng như sau:







Để truy cập Trình khởi chạy ứng dụng, chỉ cần nhấn phím Super / Windows trên bàn phím của bạn.

Thay thế lệnh $ ()

Theo hướng dẫn sử dụng GNU Bash Reference chính thức:



Thay thế lệnh cho phép đầu ra của một lệnh để thay thế chính lệnh đó. Bash thực hiện việc mở rộng bằng cách thực hiện lệnh và thay thế lệnh thay thế bằng đầu ra tiêu chuẩn của lệnh, với bất kỳ dòng mới nào ở cuối bị xóa. Các dòng mới được nhúng sẽ không bị xóa, nhưng chúng có thể bị xóa trong quá trình tách từ. Thay thế lệnh xảy ra khi một lệnh được bao gồm như sau:

$(chỉ huy)
hoặc
``chỉ huy``

Ví dụ: các lệnh echo sau thay thế đầu ra của lệnh date làm đầu vào của chúng:

$quăng đi$(ngày)
$quăng đi'ngày'

Bạn cũng có thể sử dụng thay thế lệnh để gán giá trị cho một biến. Ví dụ: chúng tôi sẽ in ngày hôm nay thông qua biến TODAY như sau:

$HÔM NAY= $(ngày)
$quăng đi '$ HÔM NAY'

Một tiện ích khác của việc thay thế lệnh là trong các vòng lặp shell để lấy đầu vào. Ở đây, chúng tôi sẽ cố gắng in tất cả các tệp .txt trong thư mục chính của chúng tôi bằng cách sử dụng thay thế lệnh:

NStrong /Trang Chủ/cho bạn/ *.txt
làm
quăng đi '$ f'
xong

Sử dụng thay thế lệnh trong tập lệnh Shell

Các ví dụ trên là một số cách mà bạn có thể sử dụng sức mạnh của việc thay thế lệnh trong tập lệnh shell của mình. Đây là một báo cáo trạng thái mẫu mà chúng tôi có thể in bằng cách sử dụng tập lệnh shell sau:

#! / bin / sh

quăng đi ***Báo cáo***

HÔM NAY= $(ngày)
quăng đi 'Hôm nay là$ HÔM NAY'

NGƯỜI DÙNG= $(ai | wc-NS)
quăng đi 'NGƯỜI DÙNG $người dùng hiện đang đăng nhập '

UPTIME= $(ngày;thời gian hoạt động)
quăng đi 'Thời gian hoạt động là$ UPTIME'

Thay thế lệnh đã được sử dụng ba lần trong tập lệnh này; in ngày tháng, người dùng đã đăng nhập và thời gian hoạt động. Chúng tôi đã lưu tập lệnh như sau:

Làm cho nó có thể thực thi và sau đó chạy nó thông qua lệnh sau:

$chmod+ x status.sh
$./statys.sh

Đây là đầu ra của tập lệnh status.sh của chúng tôi:

Tất nhiên, bạn có thể tạo các script có ý nghĩa hơn bằng cách làm theo các ví dụ mà chúng tôi vừa đề cập.

$ {} Thay thế / Mở rộng Tham số

Một tham số, trong Bash, là một thực thể được sử dụng để lưu trữ các giá trị. Một tham số có thể được tham chiếu bởi một số, một tên hoặc một ký hiệu đặc biệt. Khi một tham số được tham chiếu bởi một số, nó được gọi là tham số vị trí . Khi một tham số được tham chiếu bởi một tên, nó được gọi là Biến đổi . Khi một tham số được tham chiếu bởi một ký hiệu đặc biệt, điều đó có nghĩa là chúng là các tham số tự động cài đặt với các mục đích sử dụng đặc biệt.

Mở rộng / thay thế tham số là quá trình tìm nạp giá trị từ thực thể / tham số được tham chiếu. Nó giống như bạn đang mở rộng một biến để lấy giá trị của nó.

Cú pháp mở rộng tham số đơn giản nhất có thể là như sau:

Đây là cách bạn có thể sử dụng mở rộng tham số trong Bash:

$ {tham số}

Ví dụ, cách sử dụng đơn giản nhất là thay thế tham số bằng giá trị của nó:

$Tên='john doe'
$quăng đi $ {name}

Lệnh này sẽ thay thế giá trị của tên biến sẽ được sử dụng bằng lệnh echo:

Bạn có thể nghĩ rằng điều tương tự có thể đạt được bằng cách tránh các dấu ngoặc nhọn như sau:

Câu trả lời là trong quá trình mở rộng tham số, các dấu ngoặc nhọn này giúp phân định tên biến. Hãy để chúng tôi giải thích ý của chúng tôi bằng cách giới hạn ở đây. Hãy để tôi chạy lệnh sau trên hệ thống của mình:

$quăng đi 'Tên của người đó là$ name_'

Kết quả không in ra giá trị của tên biến vì hệ thống nghĩ rằng tôi đang tham chiếu đến tên_ biến. Do đó, tên biến của tôi không được phân tách. Dấu ngoặc nhọn trong ví dụ sau sẽ phân tách tên biến và trả về kết quả như sau:

$quăng đi 'Tên của người đó là$ {name}_ '

Dưới đây là tất cả các cách mà các biến được thay thế trong Shell:

$ {biến} Lệnh này thay thế giá trị của biến.
$ {biến: -word} Nếu một biến là null hoặc nếu nó không được đặt, thì từ sẽ được thay thế cho biến. Giá trị của biến không thay đổi.
$ {biến: = word} Nếu một biến là null hoặc nếu nó không được đặt, giá trị của biến được đặt thành word.
$ {biến:? message} Nếu một biến là null hoặc nếu nó không được đặt, thông báo sẽ được in với lỗi bash tiêu chuẩn.
$ {biến: + word} Nếu như Biến đổi được thiết lập, từ được thay thế cho biến. Tuy nhiên, bản thân giá trị của biến không thay đổi.

Các ví dụ trên là một số cách mà bạn có thể sử dụng sức mạnh của phép thay thế biến trong Bash. Bạn có thể kết hợp những cách này để sử dụng mở rộng trong các tập lệnh shell của mình để đạt được nhiệm vụ trong tầm tay một cách tối ưu.