Phiên bản ngắn
Đã trả lời bởi dudek rồi; thư mục đó được sử dụng cho các tập lệnh cho hệ thống của bạn biết cách xử lý những thứ được cắm vào nó hoặc không được cắm từ nó.
Xem "Phiên bản dài" để biết cách giải thích cách tôi hiểu được kịch bản được đề cập. Về cơ bản sau khi chạy một số kiểm tra và tải một số hàm externall, nó sẽ kiểm tra xem nó có nên chạy start
chuỗi lệnh hay không stop
, hoặc lỗi ra và thoát.
Ồ vâng, nó rất có thể khóa bạn khỏi quyền truy cập từ xa nếu bạn chạm vào cấu hình mạng theo cách mà RPi không thích. Tôi đã chạm vào các cấu hình mạng của mình trong quá khứ trên RPi của tôi rằng việc bắt đầu cài đặt mới đơn giản hơn. Hãy cẩn thận và xem xét việc di chuyển tính khí RPi đến một địa điểm dễ dàng để đăng nhập vào địa phương.
Phiên bản dài
Nhìn qua tệp này trên RPi của tôi, nó có vẻ như được nhận xét tốt và nó không sử dụng cho nhiều cuộc gọi chức năng bên ngoài. Nhưng bạn đã yêu cầu các điều khoản của layens, vì vậy tôi sẽ cố gắng hết sức để giải thích về việc tôi sẽ hiểu những loại kịch bản này như thế nào, vì có vẻ như bạn là người dùng RPi như tôi (thiết lập máy chủ từ xa không đầu) có thể kiểm tra những gì tôi đã đọc trên RPi StackExchange để tự động điều chỉnh lại cho các mạng WiFi bị ẩn vì nó có thể có các thủ thuật khác hữu ích cho các yêu cầu máy chủ của bạn.
Để giúp hỗ trợ trả lời các câu hỏi của bạn, đây là một chút phơi bày cú pháp kịch bản shell;
Trong shell ~.sh
script, thông thường tìm thấy các hàm được định nghĩa như vậy;
function_name () {
echo "doing stuff for function_name"
}
và sau đó được gọi thông qua function_name
sau trong tập lệnh, đôi khi trong các chức năng khác. Hàm, tệp script và nếu statations chỉ là danh sách các lệnh sẽ chạy. Trong trường hợp các chức năng những thứ giữa {
và }
được điều hành và trong trường hợp của if
statments những thứ giữa then
và fi
được điều hành và trong instences nơi else
hoặc elif
được sử dụng trong if
statments có điều kiện.
Đối với các tập tin chúng tôi đang disecting có chức năng đặt tên do_start
, do_stop
và một số chức năng được xác định trong các tập tin khác ... "Những gì các file là các chức năng khác definded?" hoặc "Làm thế nào để tôi tìm thấy nếu tập lệnh tải các hàm từ tệp b?" là hai câu hỏi chúng ta sẽ phải trả lời trước.
Xung quanh dòng 48
trong /etc/wpa_supplicant/ifdown.sh
đó có một dòng nhận xét (nghĩa là dòng tranh luận với #
simble; những dòng này bị bỏ qua bởi người can thiệp vào kịch bản ... chủ yếu) với việc source functions
sử dụng liên tục các mục đích của vài dòng tiếp theo ~
# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
. /etc/wpa_supplicant/functions.sh
else
exit
fi
Lưu ý đây là một ví dụ tốt về hành vi kịch bản; kiểm tra nếu một tập tin ở đó trước khi cho rằng nó là.
Bit đầu tiên if [ -f
là kiểm tra một tệp theo đường dẫn tệp được xác định. Và nếu hiện tại then
tải nội dung của tệp qua source
(lệnh ngắn gọn source
là .
nhưng tôi tránh sử dụng nó trong tập lệnh của mình vì nó có thể bị sai sót bởi cp
các lệnh khác nhưng tôi có thể truy cập) tệp được xác định bởi đường dẫn. Tiếp theo là else
kiểm tra xem nếu không tìm thấy tệp đó exit 0
với trạng thái 0
tập lệnh. Sau đó, if
stet kết thúc với fi
các hành động đóng để thực hiện nếu điều luật đầu tiên không vượt qua. Hay nói cách khác, nếu /etc/wpa_supplicant/fifts.sh khôngexsist sau đó thoát, nếu không thì tải các hàm đó và tiếp tục xử lý. Loại kiểm tra hòa tan này nếu có giá trị hoặc tệp là thứ bạn sẽ thấy lặp đi lặp lại trong toàn bộ tập lệnh đang đề cập cũng như các tập lệnh khác, -f
kiểm tra tệp, -n
kiểm tra độ dài chuỗi, -x
kiểm tra không chỉ khi có tệp mà còn nếu người dùng đang chạy tập lệnh có quyền thực thi đối với tệp được xác định, hãy -s
kiểm tra xem tệp có trống không, -n
kiểm tra xem chuỗi không trống hay null
giá trị và =
so sánh chuỗi (hoặc giá trị) trong các thống kê if
. Cái gì khác bạn sẽ thấy trong vỏ và bash script trên Linux với if
statments elif
nhưng điều đó cho một ngày khác. Trong kịch bản này là các thủ thuật khác được sử dụng ngoàiif
các thống kê như toán tử ||
"hoặc", &&
"và" và !
"không", chẳng hạn như trên dòng 55
~
# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
exit 0
fi
~ Mà chỉ cần đặt tiểu bang, nếu tập tin được định nghĩa bởi $WPA_SUP_BIN
là không thực thi hoặc tập tin định nghĩa bởi $WPA_CLI_BIN
là không thực thi lối ra sau đó với tình trạng 0
mà không cần chế biến thêm. Chúng có thể trông phức tạp lúc đầu nhưng đọc to thành một cú pháp nhân văn hơn có thể giúp ích khi học lần đầu, đối với những người đơn giản và thêm nhận xét #
cho những điều phức tạp thực sự hữu ích khi học hoặc quay lại chủ đề sau.
Các tập tin có nguồn gốc nội bộ cũng nên được kiểm tra nếu không chắc chắn về cái gì được gọi trong ifupdown.sh
tệp. Tôi đề nghị nano /etc/wpa_supplicant/functions.sh
và sau đó sử dụng ^w
hoặc Ctrl+w
tìm kiếm xung quanh tên của hàm mà bạn muốn biết thêm. Bởi vì giữa những gì từng có nhiệm vụ gọi kịch bản này và sự xuất hiện của functions.sh
hầu hết các phân puzzel sẽ được tìm thấy.
Bây giờ mọi thứ bắt đầu nới lỏng một chút đường tròn 135
, nơi case
bắt đầu một đạo luật, những loại hình này có cấu trúc chắc chắn mà chúng ta có thể sử dụng để giúp giải mã các ý kiến.
case $some_variable in
start)
echo "The word [start] was detected in \$some_variable"
;;
stop)
echo "The word [stop] was detected in \$some_variable"
;;
*)
echo "The word [$some_variable] was detected in \$some_variable but not understood"
;;
esac
Trong ví dụ trên cũng như với các thống kê khác, case
về cơ bản, chúng tôi đang tìm kiếm nội dung của $some_variable
các từ khóa bị từ chối, nghĩa là start
hoặc stop
nếu từ khóa được tìm thấy thì đưa ra các lệnh được tìm thấy giữa việc tra cứu )
và giả ;;
định hành động để phân tách các hành động khác nhau để thực hiện các khóa khác nhau từ tìm thấy. Lưu ý trong một số tập lệnh, bạn có thể tìm thấy các số liệu này case
trong for
các vòng lặp nhưng điều đó cũng dành cho một ngày khác.
Trong trường hợp của case
báo cáo trong ifupdown.sh
kịch bản chúng tôi đầu tiên phù hợp với start
hoặc stop
tình trạng bên trong $MODE
biến và sử dụng $PHASE
giá trị để phù hợp nếu pre-up
hoặc post-up
chuỗi các lệnh nên được gọi là hay nếu pre-down
hoặc post-down
chuỗi các lệnh nên được gọi để thay thế. Nếu start
không stop
được phát hiện cũng không được phát hiện thì một lỗi được ghi lại, in và tập lệnh được thoát với trạng thái 1
lỗi.