OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Một ứng dụng đầy đủ hơn

Sau một thời gian dài gián đoạn, chúng tôi sẽ tiếp tục công việc trên sys_info_page chương trình. Phần bổ sung tiếp theo của chúng tôi sẽ thêm một số tùy chọn dòng lệnh vào chương trình như sau:

Tệp đầu ra. Chúng tôi sẽ thêm một tùy chọn để chỉ định tên cho một tệp để chứa đầu ra của chương trình. Nó sẽ được chỉ định là -f hồ sơ or --tập tin hồ sơ.

Chế độ tương tác. Tùy chọn này sẽ nhắc người dùng nhập tên tệp đầu ra và sẽ xác định xem tệp được chỉ định đã tồn tại hay chưa. Nếu có, người dùng sẽ được nhắc trước khi tệp hiện có bị ghi đè. Tùy chọn này sẽ được chỉ định bởi một trong hai -i or - tương tác.

Cứu giúp. Hay -h or --Cứu giúp có thể được chỉ định để chương trình xuất ra một thông báo sử dụng nhiều thông tin.

Đây là mã cần thiết để thực hiện xử lý dòng lệnh:



sử dụng () {

echo "$ PROGNAME: using: $ PROGNAME [-f tệp | -i]" trở lại

}

# tùy chọn dòng lệnh process tương tác =

sử dụng () {

echo "$ PROGNAME: using: $ PROGNAME [-f tệp | -i]" trở lại

}

# tùy chọn dòng lệnh process tương tác =


tên tệp =


trong khi [[-n $ 1]]; làm trường hợp $ 1 trong

-f | --tập tin)

thay đổi

tên tệp = $ 1

;;

tên tệp =


trong khi [[-n $ 1]]; làm trường hợp $ 1 trong

-f | --tập tin)


-i | - tương tác) tương tác = 1

;;

-h | --help) thoát sử dụng

;;

*) sử dụng> & 2

thoát 1

;;

-i | - tương tác) tương tác = 1

;;

-h | --help) thoát sử dụng

;;

*) sử dụng> & 2

thoát 1

;;


nó C

ca làm xong

nó C

ca làm xong


hình ảnh

Đầu tiên, chúng tôi thêm một hàm shell được gọi là sử dụng để hiển thị thông báo khi tùy chọn trợ giúp được gọi hoặc một tùy chọn không xác định được thử.

Tiếp theo, chúng tôi bắt đầu vòng xử lý. Vòng lặp này tiếp tục trong khi tham số vị trí

$ 1 không trống. Ở cuối vòng lặp, chúng ta có một lệnh shift để nâng cao các tham số vị trí để đảm bảo rằng vòng lặp cuối cùng sẽ kết thúc.

Trong vòng lặp, chúng tôi có một trường hợp câu lệnh kiểm tra tham số vị trí hiện tại để xem nó có khớp với bất kỳ lựa chọn nào được hỗ trợ hay không. Nếu một tham số được hỗ trợ được tìm thấy, nó sẽ được thực hiện. Nếu một lựa chọn không xác định là founc, thông báo sử dụng được hiển thị và tập lệnh kết thúc do lỗi.

-f tham số được xử lý theo một cách thú vị. Khi được phát hiện, nó gây ra thêm thay đổi xảy ra, điều này nâng cao tham số vị trí $1 đối số tên tệp được cung cấp cho -f tùy chọn.

Tiếp theo, chúng tôi thêm mã để triển khai chế độ tương tác:



# chế độ tương tác


if [[-n $ tương tác]]; then while true; làm

read -p "Nhập tên tệp đầu ra:" tên tệp if [[-e $ filename]]; sau đó

read -p "'$ filename' tồn tại. Ghi đè? [y / n / q]>" trường hợp $ REPLY trong

Y | y) phá vỡ

# chế độ tương tác


if [[-n $ tương tác]]; then while true; làm

read -p "Nhập tên tệp đầu ra:" tên tệp if [[-e $ filename]]; sau đó

read -p "'$ filename' tồn tại. Ghi đè? [y / n / q]>" trường hợp $ REPLY trong

Y | y) phá vỡ


;;

Q | q) echo "Chương trình đã kết thúc." lối ra

;;

*) tiếp tục

;;

nó C

elif [[-z $ filename]]; sau đó tiếp tục

khác

phá vỡ

fi

thực hiện

fi

;;

Q | q) echo "Chương trình đã kết thúc." lối ra

;;

*) tiếp tục

;;

nó C

elif [[-z $ filename]]; sau đó tiếp tục

khác

phá vỡ

fi

thực hiện

fi


Nếu tương tác biến không trống, một vòng lặp vô tận được bắt đầu, chứa lời nhắc tên tệp và mã xử lý tệp hiện có sau đó. Nếu tệp đầu ra mong muốn đã tồn tại, người dùng sẽ được nhắc ghi đè, chọn tên tệp khác hoặc thoát khỏi chương trình. Nếu người dùng chọn ghi đè lên tệp hiện có, phá vỡ được thực thi để kết thúc vòng lặp. Chú ý cách trường hợp câu lệnh chỉ phát hiện nếu người dùng chọn ghi quá nhiều hoặc thoát. Bất kỳ lựa chọn nào khác khiến vòng lặp tiếp tục và nhắc người dùng một lần nữa.

Để triển khai tính năng tên tệp đầu ra, trước tiên chúng ta phải chuyển đổi mã viết trang hiện có thành một hàm shell, vì những lý do sẽ trở nên rõ ràng trong giây lát:



write_html_page () {cat << - _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_ trở lại

}


# đầu ra trang html


if [[-n $ filename]]; sau đó

write_html_page () {cat << - _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_ trở lại

}


# đầu ra trang html


if [[-n $ filename]]; sau đó


nếu chạm vào $ filename && [[-f $ filename]]; sau đó write_html_page> $ filename

khác

echo "$ PROGNAME: Không thể ghi tệp '$ filename'"> & 2 thoát 1

fi khác

write_html_trang

fi

nếu chạm vào $ filename && [[-f $ filename]]; sau đó write_html_page> $ filename

khác

echo "$ PROGNAME: Không thể ghi tệp '$ filename'"> & 2 thoát 1

fi khác

write_html_trang

fi


Mã xử lý logic của -f tùy chọn xuất hiện ở cuối danh sách hiển thị ở trên. Trong đó, chúng tôi kiểm tra sự tồn tại của tên tệp và nếu tìm thấy tên tệp, một bài kiểm tra sẽ được thực hiện để xem tệp có thực sự có thể ghi được hay không. Để làm điều này, một chạm được thực hiện, tiếp theo là kiểm tra để xác định xem tệp kết quả có phải là tệp thông thường hay không. Hai bài kiểm tra này xử lý sit - uations trong đó tên đường dẫn không hợp lệ được nhập vào (chạm sẽ bị lỗi), và, nếu tệp đã tồn tại, thì đó là tệp thông thường.

Như chúng ta có thể thấy, write_html_trang hàm được gọi để thực hiện địa chỉ thực của trang. Đầu ra của nó hoặc được hướng đến đầu ra tiêu chuẩn (nếu biến tập tin- tên trống) hoặc được chuyển hướng đến tệp được chỉ định.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: