Dưới đây là một số mẹo hữu ích cần ghi nhớ khi viết các tập lệnh shell của bạn trong Linux.
Tập lệnh shell là một cách linh hoạt để tự động hóa quy trình công việc của bạn trong Linux (và MacOS, và bây giờ là Windows, với Hệ thống con Windows dành cho Linux). Cú pháp và hành vi của kịch bản Shell có những điều kỳ quặc và có những phím tắt hữu ích mà bạn có thể sử dụng để đơn giản hóa các tập lệnh của mình.
Mẹo viết mã Bash
Những mẹo này được thu thập từ khắp nơi trên internet, với một vài mẹo của riêng tôi.
Bash scripts sẽ tiếp tục chạy ngay cả khi có lỗi!
Điều này có thể gây ra sự cố, đặc biệt nếu chấp nhận đầu vào của người dùng và làm việc với tệp. Để ngăn chặn hành vi này, hãy thêm lệnh set
set -eu
… vào đầu tập lệnh của bạn. - đ yêu cầu tập lệnh thoát khi bị lỗi và - u yêu cầu tập lệnh thoát nếu một biến không được đặt.
LUÔN LUÔN bao gồm shebang
Luôn bao gồm shebang làm dòng đầu tiên trong tập lệnh của bạn:
#!/bin/sh
Điều này cho hệ thống biết trình bao nào nên được sử dụng để diễn giải tập lệnh và rất quan trọng đối với khả năng tương thích. Một tập lệnh được viết cho Bash có thể hoạt động khác khi chạy trong Zsh, nhưng bằng cách bao gồm shebang, bạn có thể đảm bảo nó được diễn giải với đúng shell.
Không bao giờ người dùng sudo trong tập lệnh của bạn
Điều này gây ra sự mơ hồ nếu bạn chạy một tập lệnh và có thể gây ra sự cố khi sử dụng đường ống và chuyển hướng. Đó cũng là một vấn đề bảo mật. Nếu một tập lệnh cần quyền root, thì toàn bộ tập lệnh phải được chạy dưới dạng root hoặc sử dụng sudo .
Kiểm tra xem tập lệnh có đang được chạy dưới dạng root / sudo trong tập lệnh hay không
Thêm lệnh này vào đầu tập lệnh của bạn để kiểm tra xem nó có đang chạy với đặc quyền root / sudo hay không. Lệnh này sẽ khiến tập lệnh của bạn bị lỗi trước khi nó cố gắng thực hiện bất cứ điều gì, thay vì khi bạn thử và chạy một lệnh yêu cầu đặc quyền root
# Check if running as root if ((EUID!=0 )); then printf "Please run as root" exit 1 fi
Bỏ qua lời nhắc apt với -y
Thêm -y vào cuối các lệnh apt của bạn để bỏ qua lời nhắc và cho phép các tập lệnh của bạn chạy mà không cần người dùng nhập:
sudo apt install nano -y
hoặc
sudo apt upgrade -y
Trích dẫn đường dẫn của bạn !!!
Trích dẫn đường dẫn của bạn khi viết tập lệnh Bash. Điều quan trọng là chúng tôi có cả một bài viết giải thích lý do tại sao.
Và chính xác cho thư mục làm việc hiện tại
CURR_DIR="$(dirname $0);" printf -- 'moving application to /opt/app.jar'; mv "${CURR_DIR}/application.jar" /opt/app.jar;
Đặt giá trị mặc định cho các biến từ đầu vào của người dùng
Khi nhắc người dùng nhập, có thể đặt giá trị mặc định bằng cách sử dụng như sau:
echo "Enter a value" read val val=${val:-"Default Value"}
Nếu biến val trống sau khi nó được đọc, giá trị mặc định sẽ được đặt.
Để lại nhiều nhận xét
Đó là vì lợi ích tương lai của bạn - giải thích những gì bạn đang làm và lý do bạn làm điều đó. Rõ ràng về ý định mã của bạn là một kiểm tra tỉnh táo tốt và hỗ trợ gỡ lỗi và nhận xét rộng rãi giúp bạn dễ dàng quay lại mã của mình vào một ngày sau đó.
In, In, In
In càng nhiều thông tin vào bảng điều khiển càng tốt, để nếu tập lệnh của bạn gặp sự cố, bạn sẽ biết ở đâu Nó gãy. Các tập lệnh Bash theo mặc định không nhất thiết phải dài dòng.
Tạo trạng thái thoát
Nếu tập lệnh của bạn gặp lỗi, hãy đảm bảo rằng tập lệnh thoát bằng mã thoát thích hợp để các tập lệnh khác có thể gọi nó có thể phản ứng thích hợp.