Pageferry
Quy trình làm việc

Thực thi script Bash: từ mở thư mục đến mã thoát

03
Chạy một script

Chạy script Bash với đối số trên WSL hoặc qua SSH

Một script Bash có thể được khởi động theo ba cách: `bash script.sh arg1 arg2`, `./script.sh` sau khi chạy `chmod +x` (hoạt động nhờ dòng shebang), hoặc thông qua lệnh nội bộ `exec`, lệnh này thay thế shell hiện tại và không bao giờ trả về. Cách đầu tiên dễ bắt đầu nhất vì không cần thay đổi quyền. Shell chạy lệnh trong môi trường bạn đã chọn, đó là WSL trên máy tính của bạn hoặc một hệ thống Linux bạn sở hữu qua SSH, và thẻ trong cuộc trò chuyện hiển thị đầu ra thực tế cùng mã thoát. Bạn quyết định các đối số, vì vậy bạn có thể kiểm tra trường hợp bình thường và trường hợp lỗi trong cùng một cuộc trò chuyện. Mọi người thường hỏi nên chọn cách nào: hãy dùng `bash script.sh` khi bạn đang kiểm thử, vì nó hoạt động ngay cả khi file không có quyền thực thi, và chuyển sang `./script.sh` khi script đã hoàn tất và bắt đầu bằng dòng shebang. Dù bạn dùng cách nào, trạng thái thoát cũng là một số từ 0 đến 255, và 0 luôn có nghĩa là script đã kết thúc thành công.

01

Mở thư mục

Chọn thư mục chứa script của bạn làm thư mục làm việc; các công cụ file như `read_file` và `grep` hoạt động bên trong nó. Các công cụ file hoạt động trong thư mục đó, trong khi Shell, web và SSH không bị giới hạn bởi nó.

02

Chọn chế độ phê duyệt

Sử dụng Ask first để xem từng thay đổi dưới dạng diff, hoặc Plan only để đọc kế hoạch trước. Auto-run thực hiện ngay lập tức. Ask first chỉ tạm dừng trước các hành động làm thay đổi dữ liệu.

03

Yêu cầu chạy script

Mô tả việc chạy bằng lời văn đơn giản, ví dụ: chạy script với đối số test. Đặt tên WSL hoặc máy chủ của bạn nếu bạn có cả hai. Đặt tên script và các đối số của nó chính xác.

04

Đọc kết quả

Mở thẻ để xem đầu ra và mã thoát thực tế, sau đó chấp nhận hoặc từ chối bất kỳ chỉnh sửa nào. Một số khác 0 mang tính thông tin. Chạy lại sau mỗi lần chỉnh sửa được chấp nhận. So sánh nó với kết quả bạn mong đợi.

Một script ví dụ nhỏ

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.sh dừng lại với dòng hướng dẫn sử dụng và mã thoát 2 khi thiếu tên, nhận một số lượng tùy chọn với giá trị mặc định là 1, và chỉ in lời chào trong vòng lặp. Đọc nó một lần trước khi chạy: không có sudo, không tải xuống và không có gì di chuyển hoặc xóa file, vì vậy nó an toàn để kiểm thử trên bất kỳ máy nào bạn sở hữu. Từng dòng: shebang đặt tên trình thông dịch, `set -eu` dừng script khi có lỗi hoặc biến chưa được đặt, phép kiểm `$#` đếm các đối số, và vòng lặp `for` chỉ in ra màn hình.

Chạy script trong bốn bước nhỏ

Tạo file script

Bắt đầu với một thư mục làm việc trống. Yêu cầu agent viết ví dụ ở trên, và `write_file` sẽ tạo `greet.sh` trong thư mục đó. Mở thẻ và đọc file từng dòng: dòng đầu tiên là shebang đặt tên trình thông dịch, `set -eu` dừng script khi có lỗi hoặc biến chưa được đặt, và phép kiểm `$#` bảo vệ phần còn lại khỏi việc thiếu tên. Dưới chế độ Ask first, file mới sẽ chờ sự chấp thuận của bạn trước khi được ghi. Chưa có gì được chạy. Nhánh hướng dẫn sử dụng của script này chọn 2 cho việc sử dụng sai, đây là một quy ước phổ biến. Chỉ chấp nhận file khi bạn hiểu từng dòng, và nếu không, hãy yêu cầu agent giải thích nó. Một chỉnh sửa bị từ chối sẽ giữ nguyên thư mục.

Chạy nó và đọc mã thoát

Những người tìm kiếm “bash execute script” thường muốn một dòng lệnh: `bash greet.sh test`. Yêu cầu agent chạy nó, và Shell sẽ bắt đầu lệnh trong môi trường cuộc trò chuyện của bạn, chẳng hạn như WSL, và gửi lại đầu ra thực tế cùng mã thoát thực tế. Mở rộng thẻ để xem toàn bộ đầu ra. Sau đó, yêu cầu chạy lại cùng lệnh mà không có đối số, và bạn sẽ thấy dòng hướng dẫn sử dụng cùng mã thoát 2. Mã thoát cho các ứng dụng dòng lệnh là một số từ 0 đến 255 mà trình gọi đọc, và 0 có nghĩa là thành công. Mã thoát 127 có nghĩa là không tìm thấy lệnh và 126 có nghĩa là không thể thực thi file, vì vậy hai số này chỉ ra lỗi chính tả, chương trình bị thiếu hoặc thiếu quyền thực thi.

Đọc các đối số bên trong script

`read_file` hiển thị script và `grep` tìm nơi `$1` và `$2` được sử dụng, vì vậy bạn có thể kiểm tra xem mỗi đối số có giá trị mặc định hoặc thông báo lỗi hay không. Dưới đây là cách phân tích các đối số tùy chọn: script vòng lặp với `getopts`, và với chỉ một hoặc hai giá trị thì `$1` và `${2:-1}` đơn giản là đủ. Các bí danh có đối số không hoạt động giống như các hàm, vì một bí danh chỉ thay thế từ đã nhập bằng văn bản, vì vậy hãy sử dụng hàm khi các giá trị phải nằm ở giữa. Yêu cầu agent thay đổi một thứ, chẳng hạn như giá trị mặc định của số lượng, và đọc diff mà `edit_file` hiển thị. Sau đó, chạy lại script và so sánh mã thoát mới với mã cũ. Plan only có thể liệt kê các tham số mà script hiểu mà không cần chạy bất cứ thứ gì.

Chạy cùng script trên máy chủ bạn sở hữu

Các bước tương tự hoạt động khi môi trường làm việc là một hệ thống Linux bạn sở hữu, được truy cập qua SSH. Các công cụ file vẫn hoạt động trong thư mục làm việc của cuộc trò chuyện, trong khi các lệnh Shell chạy trong môi trường bạn đã chọn, vì vậy hãy kiểm tra xem thẻ đề cập đến cái nào. Lệnh nội bộ `exec`, mà mọi người tìm kiếm dưới dạng “bash exec script”, thay thế shell bằng một lệnh khác và không bao giờ trả về, vì vậy mọi thứ sau nó sẽ không chạy và mã thoát là mã của lệnh mới. Hãy giữ một bản sao trước khi script di chuyển hoặc xóa file, chạy nó với `echo` trước như một lần chạy thử, và chỉ sử dụng các máy bạn được phép quản lý. Đọc thẻ cuối cùng trước khi đóng cuộc trò chuyện. Khi bạn chuyển tất cả các giá trị sang một lệnh khác, hãy viết "$@" trong dấu ngoặc kép để mỗi giá trị giữ nguyên định dạng của nó.

Pageferry cho Windows

Kiểm thử script Bash trên máy của bạn

Tải xuống Pageferry ↗