Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Mẹo viết kịch bản Linux Shell / Bash của LinuxScrew

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.