Các shiftcommand thay đổi các biến tham số để điều gì sẽ
bình thường là $ 2becomes $ 1, những gì sẽ là $ 3becomes $ 2, và như vậy.
Thêm một số, như trong ca 3, thay đổi các bài tập bằng con số của
đơn vị. Các shiftcommand không làm thay đổi $ 0variable, mặc dù. Bạn có thể
sử dụng kết hợp shiftin với một vòng lặp (mô tả sau, trong "Sử dụng Loops")
để kiểm tra tất cả các thông số được truyền cho một kịch bản, trong trường hợp đặt hàng hoặc họ
số là chưa biết khi bạn viết kịch bản.
Như một ví dụ về cách một kịch bản với một biến tham số có thể giúp đỡ trong tình huống như vậy,
xem xét Listing 9.2. Kịch bản này tạo ra một tài khoản và thay đổi mật khẩu của tài khoản
(bạn sẽ được nhắc nhở để nhập mật khẩu khi bạn chạy các script). Nó tạo ra một thư mục
trong cây shareddirectory / tương ứng với tài khoản, và nó đặt ra một liên kết tượng trưng đến
thư mục đó từ thư mục chủ của người dùng mới. Nó cũng điều chỉnh quyền sở hữu và quyền trong một cách mà có thể hữu ích, tùy thuộc vào quyền sở hữu và quyền hạn của hệ thống
chính sách.
438 Chương 9 ■ Scripts Viết, Cấu hình Email, và sử dụng cơ sở dữ liệu
Listing 9.2: Một kịch bản mà làm giảm tính sáng tạo sự nhàm
chán! # / bin / sh
useradd -m 1 $
passwd 1 $
mkdir -p / chia sẻ / 1 $
chown $ 1.users / chia sẻ / 1 $
chmod 775 / chia sẻ / 1 $
ln -s / chia sẻ / $ 1 / home / $ 1 / chia sẻ
chown $ 1.users / home / $ 1 / chia sẻ
Nếu bạn sử dụng Bảng liệt kê 9.2, bạn cần gõ chỉ có ba điều: tên kịch bản với mong muốn
tên người dùng và mật khẩu (hai lần). Ví dụ, nếu kịch bản được gọi là mkuser, bạn có thể sử dụng
nó như thế này:
ajones # mkuser
Thay đổi mật khẩu cho ajones người dùng
Mật khẩu mới:
Nhập lại mật khẩu mới:
passwd: tất cả các thẻ xác thực được cập nhật thành công
nhất của chương trình 'kịch bản hoạt động âm thầm, trừ khi họ gặp phải vấn đề, vì vậy
tương tác (bao gồm cả cách gõ mật khẩu, mà không echo để màn hình) là một kết quả của
chỉ passwdcommand. Trong thực tế, kịch bản Listing 9.2 sẽ thay thế bảy dòng lệnh
với một. Mỗi một trong những dòng sử dụng tên người dùng, do đó bằng cách chạy script này, bạn cũng
làm giảm cơ hội của một lỗi đánh máy gây ra vấn đề.
Một loại biến được phân công trong kịch bản-ví dụ, các biến như vậy có thể
được thiết lập từ đầu ra của một lệnh. Các biến này cũng được xác định bởi các dấu hiệu đồng đô la hàng đầu, nhưng họ thường đưa ra những cái tên ít nhất là bắt đầu với một bức thư, chẳng hạn như $ Addr
hoặc $ Name. (Khi giá trị được gán cho biến, dấu $ được bỏ qua, như minh họa
trong thời gian ngắn.) Sau đó bạn có thể sử dụng các biến này kết hợp với các lệnh thông thường như thể họ
là các thông số lệnh, nhưng giá trị của biến được truyền vào lệnh.
Ví Ví dụ, hãy xem xét Bảng liệt kê 9.3, trong đó kiểm tra để xem liệu router của máy tính là
với sự giúp đỡ của các pingutility. Kịch bản này sử dụng hai biến. Việc đầu tiên là $ ip, mà
được chiết xuất từ các đầu ra của routeusing các grep, tr, và cutcommands. (Những
lệnh này được mô tả trong Chương 1.) Khi bạn đang gán giá trị cho một biến từ
các đầu ra của một lệnh, lệnh đó phải được kèm theo trong các nhân vật lại dấu tick (`),
trong đó xuất hiện trên cùng một phím dấu ngã (~) trên hầu hết các bàn phím. Đây là những notordinary
dấu nháy đơn, xuất hiện trên cùng một phím với các nhân vật báo thường xuyên (") trên hầu hết các
bàn phím. Các biến thứ hai, $ ping, chỉ đơn giản là chỉ vào pingprogram. Nó có thể dễ dàng được
bỏ qua, với việc sử dụng tiếp theo của $ pingreplaced bởi các đường dẫn đầy đủ đến các chương trình hoặc chỉ đơn giản
bằng cách ping (dựa trên biến $ PATHenvironment để tìm các chương trình). Biến như thế này
đôi khi được dùng để làm cho nó dễ dàng hơn để thay đổi kịch bản trong tương lai. Ví dụ, nếu bạn
đang được dịch, vui lòng đợi..
![](//viimg.ilovetranslation.com/pic/loading_3.gif?v=b9814dd30c1d7c59_8619)