Trong các tập lệnh bash, việc gán đầu ra của lệnh cho các biến có thể thuận tiện bằng cách lưu trữ đầu ra của các lệnh và sử dụng chúng sau này
Trong hướng dẫn ngắn này, chúng ta sẽ xem cách bạn có thể lưu trữ đầu ra của lệnh dưới dạng một biến trong Bash
Khái niệm cơ bản để thiết lập biến
Lưu đầu ra của lệnh dưới dạng một biến đạt được thông qua thay thế lệnh. Thay thế lệnh là một trình bao bọc thực thi lệnh trong môi trường lớp vỏ con và thay thế lệnh được bao bọc bằng đầu ra tiêu chuẩn của môi trường mà lệnh được chạy. Đầu ra này sau đó có thể được tham chiếu sau, nếu được kết nối với một biến tham chiếu
Thay thế lệnh có thể đạt được thông qua backticks hoặc ký hiệu đô la với dấu ngoặc đơn
`command`
$[command]
Có tranh luận về việc liệu `command` [backticks] hay $[command] [dấu đô la và dấu ngoặc đơn] nên được sử dụng làm "phương pháp hay nhất". $[command]
hoạt động tốt trong việc lồng nhau và cải thiện khả năng đọc trong một số trường hợp, nhưng bạn có thể sử dụng một trong hai cú pháp trong các ví dụ tiến hành
Điều đó đang được nói - việc gán đầu ra của lệnh cho một biến trong Bash dễ dàng như
VARIABLE=$[command]
echo "${VARIABLE}"
Chạy ${variable}
được gọi là mở rộng tham số và được sử dụng để đánh giá và tìm nạp giá trị được liên kết với một biến tham chiếu
Bây giờ chúng ta hãy xem ví dụ đơn giản về thiết lập một biến cho lệnh thay đổi màu đầu ra
#!/bin/bash
GREEN=$[tput setaf 2]
echo "${GREEN}Please"
ORANGE=$[tput setaf 9]
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
Trong đoạn trích, chúng tôi đã sử dụng lệnh tput
và gán giá trị trả về của các lệnh đó để in văn bản đầy màu sắc. setaf
thay đổi màu nền trước và 3 [xanh lục] và 9 [cam] là các mã màu
Bây giờ chúng ta sẽ chuyển sang một ví dụ khác chứa nhiều điều kiện để thiết lập biến cho các lệnh khác nhau
#!/bin/bash
PERSON=$[whoami]
echo -e "Hey ${PERSON}! I am Charlie\n"
DETAILS=$[uname -a]
echo -e "You're running this script on:\n${DETAILS}\n"
DATES=$[date]
echo -e "The script is being run on:\n${DATES}\n"
CREATE=$[touch $[date +"%d%m%Y"].txt]
echo -e "A text file logging this run is created.${CREATE}\n"
LOCATION=$[ls \
-l *txt]
echo -e "Saved text file at: ${LOCATION}"
Trong đoạn mã trên, lệnh whoami
trả về tên người dùng hiện tại.
VARIABLE=$[command]
echo "${VARIABLE}"
0 trả về thông tin hệ thống và VARIABLE=$[command]
echo "${VARIABLE}"
1 trả về ngày và giờ hiện tạiGhi chú. Chúng ta có thể gán biến chuỗi bằng cách thêm nhiều lệnh vào một lệnh gọi lồng nhau. Biến
VARIABLE=$[command]
echo "${VARIABLE}"
2 chứa đầu ra của lệnh VARIABLE=$[command]
echo "${VARIABLE}"
3, từ đó tạo một tệp và đặt tên tệp thành đầu ra của lệnh VARIABLE=$[command]
echo "${VARIABLE}"
4Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Cuối cùng, chúng tôi thêm khái niệm gán biến lệnh
VARIABLE=$[command]
echo "${VARIABLE}"
5 bằng cách thêm dấu gạch chéo ngược VARIABLE=$[command]
echo "${VARIABLE}"
6 giữa cờ lệnh VARIABLE=$[command]
echo "${VARIABLE}"
7 VARIABLE=$[command]
echo "${VARIABLE}"
8 để chỉ hiển thị các tệp văn bản bằng cách sử dụng VARIABLE=$[command]
echo "${VARIABLE}"
9. Dấu gạch chéo ngược là một ký tự thoát thông báo cho trình bao không diễn giải ký tự tiếp theoTrong lệnh
#!/bin/bash
GREEN=$[tput setaf 2]
echo "${GREEN}Please"
ORANGE=$[tput setaf 9]
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
0, chúng tôi đã thêm cờ #!/bin/bash
GREEN=$[tput setaf 2]
echo "${GREEN}Please"
ORANGE=$[tput setaf 9]
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
1 để sử dụng ký tự đặc biệt, i. e. , #!/bin/bash
GREEN=$[tput setaf 2]
echo "${GREEN}Please"
ORANGE=$[tput setaf 9]
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
2 [dòng mới], để in đầu ra trong dòng mớiChúng tôi nhận được kết quả sau khi thực hiện tập lệnh
$ ./variable.sh
Phần kết luận
Trong hướng dẫn ngắn này, chúng tôi đã xem xét cách bạn có thể đặt đầu ra của một lệnh thành một biến trong Bash. Chúng tôi đã xem xét sự khác biệt giữa các cú pháp thay thế lệnh, lưu ý những cải tiến về khả năng đọc của $[command]
so với thay thế dựa trên backtick. Sau đó, chúng ta đã xem xét một số ví dụ về cả phép gán đơn giản và phép gán đầu ra theo chuỗi/lồng nhau