3案例3:使用特殊變量
3.1 問題
本例要求編寫一個腳本/root/myuseradd,功能特性如下:
1)此腳本可接收2個位置參數,能夠按照下列格式執行:
/root/myuseradd 用戶名 密碼
2)腳本執行後,能顯示“一共提供了$#個參數”,然後在下一行顯示 “用戶名是$1,密碼是 $2”,緊跟下一行開始輸出對應文件的前幾行內容。
3.2方案
使用位置變量可以取得在執行腳本時提供的命令行參數:
- 表示爲$n,n爲序號
- $1、$2、… … ${10}、 ${11}}、… …
使用預定義變量 $#可以統計執行後腳本時提供的位置變量個數。
3.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫/root/myuseradd添加用戶的腳本
1)編寫腳本代碼
[root@server0 ~]# vim /root/myuseradd
#!/bin/bash
echo "一共提供了 $# 個參數"
echo "用戶名是 $1,密碼是 $2 "
useradd $1
echo "$2" | passwd --stdin $1
2)添加執行權限
[root@server0 ~]# chmod +x /root/myuseradd.sh
步驟二:測試/root/myuseradd 腳本
1)測試添加用戶bob,密碼設爲1234567
[root@server0 ~]# /root/myuseradd bob 1234567
一共提供了 2 個參數
用戶名是 bob,密碼是 1234567
更改用戶 bob 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@server0 ~]# id bob
uid=1002(bob) gid=1002(bob) 組=1002(bob)
2)測試添加用戶jerry,密碼設爲 1234567
[root@server0 ~]# /root/myuseradd jerry 1234567
一共提供了 2 個參數
用戶名是 jerry,密碼是 1234567
更改用戶 jerry 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@server0 ~]# id jerry
uid=1003(jerry) gid=1003(jerry) 組=1003(jerry)