Làm cách nào để chuyển biến PHP sang tập lệnh Shell?
Trước tiên hãy xem những gì sẽ không hoạt động 100%. Nếu bạn đã quen với việc chuyển các tham số dòng lệnh tới tập lệnh PHP trong trình duyệt web bằng tham số truy vấn (và sau đó tra cứu nó bằng $_GET), bạn có thể đang thử làm điều gì đó như thế này Show Tất nhiên PHP sẽ nhanh chóng từ chối điều này với một lỗi như thế này Lý do xảy ra là vì PHP đang tìm kiếm một tệp có tên "script. php?param1=value1" nhưng tập lệnh thực sự được gọi là "tập lệnh. php". Hệ thống tệp không phải là máy chủ web nên không biết cách xử lý các tham số truy vấn. Một cách tiếp cận khác là cần thiết Hãy xem xét phương pháp 'cổ điển' để truyền tham số dòng lệnh cho tập lệnh - sử dụng $argc và $argv Đây là một tập lệnh PHP hiển thị tất cả các đối số dòng lệnh được truyền cho nó Để truyền đối số dòng lệnh cho tập lệnh, chúng ta chỉ cần đặt chúng ngay sau tên tập lệnh như vậy Sản lượng được tạo ra là Lưu ý rằng đối số thứ 0 là tên của tập lệnh PHP được chạy. Phần còn lại của mảng là các giá trị được truyền vào trên dòng lệnh. Các giá trị được truy cập thông qua mảng $argv. Cách tiếp cận này hoạt động, nhưng nó rất đơn giản và không hoạt động tốt nếu bạn đang muốn chuyển từ cách chuyển tham số truy vấn sang giá trị sang tập lệnh của mình. Với cách tiếp cận này, không có cách nào để đặt tên cho các đối số dòng lệnh được truyền vào Nếu bạn muốn có thể gán tên biến cho các giá trị được truyền vào, getopt() là cách để thực hiện. Bây giờ hãy xem một phiên bản khác của tập lệnh Hãy chạy tập lệnh này như thế này Sản lượng được tạo ra là Có một số khác biệt lớn ở đây. Đầu tiên với getopt() bạn phải chỉ định đối số dòng lệnh nào bạn muốn truy xuất. Trong trường hợp của tập lệnh này, nó sẽ tìm kiếm đối số "-p", được chỉ định bởi "p. " giá trị được chuyển đến getopt(). Dấu hai chấm (. ) có nghĩa là tham số phải có giá trị. Nếu bạn đã quen làm những việc như "tập lệnh. php?p=value1" cái này tương đương với dòng lệnh Cũng có thể chuyển nhiều giá trị vào e. g Trong trường hợp này, giá trị thay đổi thành một mảng, vì vậy điều quan trọng là phải kiểm tra loại giá trị trước khi sử dụng Nếu bạn muốn truyền vào nhiều tham số có tên khác nhau e. g. "p" và "q", bạn thay đổi cách gọi getopt() như thế này Sau đó chạy kịch bản như thế này sản xuất đầu ra này Cách sử dụng getopt() ở trên giới hạn bạn sử dụng tên tham số ký tự đơn, nếu bạn muốn sử dụng tên tham số như "tên" thì sao? Khi sử dụng tên tham số dài, cách chạy tập lệnh PHP sẽ thay đổi một chút, trong trường hợp này, chúng tôi truyền tham số như sau Đầu ra sau đó là Điều này cũng có thể được mở rộng thành nhiều tham số được đặt tên khác nhau. Truyền cùng một tham số có tên nhiều lần cũng dẫn đến giá trị thuộc kiểu mảng, giống như mô tả trước đó. Cũng có thể chuyển các giá trị có dấu cách trong đó bằng cách đặt chúng trong dấu ngoặc kép Bài viết này không đề cập đến tất cả các khả năng với getopt() nhưng nó cung cấp một điểm khởi đầu và hy vọng bây giờ bạn có thể chuyển đổi tập lệnh sử dụng các tham số truy vấn thông thường với $_GET thành một thứ sử dụng một trong các cách tiếp cận đã nêu ở trên -Tôi Mặc dù tôi đã nỗ lực rất nhiều để nghiên cứu tất cả các chủ đề mà tôi đề cập, nhưng vẫn có thể xảy ra sai sót. Việc sử dụng bất kỳ thông tin nào từ các bài đăng trên blog của tôi phải tự chịu rủi ro và tôi không chịu bất kỳ trách nhiệm pháp lý nào đối với bất kỳ việc lạm dụng thông tin hoặc thiệt hại nào do theo dõi bất kỳ bài đăng nào của tôi Tất cả nội dung và ý kiến thể hiện trên Blog này là của riêng tôi và không đại diện cho ý kiến của chủ nhân của tôi (Oracle). Việc sử dụng bất kỳ thông tin nào có trong bài đăng / bài viết trên blog này phải tuân theo tuyên bố từ chối trách nhiệm này
________số 8_______
Làm cách nào để truyền đối số trong shell script PHP?Để truyền đối số dòng lệnh cho tập lệnh, chúng ta chỉ cần đặt chúng ngay sau tên tập lệnh như vậy. Lưu ý rằng đối số thứ 0 là tên của tập lệnh PHP được chạy. Phần còn lại của mảng là các giá trị được truyền vào trên dòng lệnh. Các giá trị được truy cập thông qua mảng $argv.
$_ trong shell script là gì?$_ (dấu gạch dưới đô la) là một tham số bash đặc biệt khác và được sử dụng để tham chiếu tên tệp tuyệt đối của tập lệnh shell hoặc bash đang được thực thi như được chỉ định trong danh sách đối số< . Tham số bash này cũng được sử dụng để giữ tên của tệp thư trong khi kiểm tra email. . This bash parameter is also used to hold the name of mail file while checking emails.
${} trong bash là gì?$() có nghĩa là. "đầu tiên đánh giá điều này, và sau đó đánh giá phần còn lại của dòng". Bán tại. tiếng vang $(pwd)/myFile. txt. sẽ được hiểu là echo /my/path/myFile. txt. Mặt khác, ${} mở rộng một biến .
Biến $ trong bash là gì?Nếu biến1 là tên của một biến, thì $biến1 là tham chiếu đến giá trị của biến đó, mục dữ liệu mà biến đó chứa . [ 1] bash$ variable1=23 bash$ echo biến1 biến1 bash$ echo $variable1 23. |