### 闰年判断 编写脚本实现:判断给定的某一年是否是闰年,并显示“****年是闰年或是平年。”的提示。 ```bash #!/bin/bash year=$1 if ((year % 400 == 0)) || ((year % 4 == 0 && year % 100 != 0)) ; then echo "${year} 是闰年." else echo "${year} 是平年." fi ``` 测试输出如下 ```text ❯ ./leap_year.sh 2025 2025 是平年. ❯ ./leap_year.sh 2024 2024 是闰年. ❯ ./leap_year.sh 2000 2000 是闰年. ❯ ./leap_year.sh 2005 2005 是平年. ❯ ./leap_year.sh 1660 1660 是闰年. ❯ ./leap_year.sh 1840 1840 是闰年. ``` ### 添加用户 用for循环实现批量添加用户。要求通过键盘输入大于10的指定数量,用户名在1~9时,设为user01~user09。【思考:第二次运行时会是什么现象?如果希望每次运行时都可以成功建立,程序要怎么改?】 ```bash #!/bin/bash # 读取用户输入的用户数量 read -p "请输入要添加的用户数量(必须大于10): " num_users # 确保输入大于10 if [ "$num_users" -le 10 ]; then echo "用户数量必须大于10!" exit 1 fi # 批量创建用户 for i in $(seq 1 $num_users); do # 格式化用户名 if [ $i -lt 10 ]; then username="user0$i" else username="user$i" fi # 检查用户是否已存在 if id "$username" &>/dev/null; then echo "用户 $username 已存在,跳过创建。" else sudo useradd "$username" && echo "用户 $username 创建成功。" fi done ``` 执行脚本前,使用 `cat /etc/passwd` 查看所有用户,输出如下 ```bash ❯ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin _apt:x:42:65534::/nonexistent:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin dhcpcd:x:100:65534:DHCP Client Daemon,,,:/usr/lib/dhcpcd:/bin/false messagebus:x:101:102::/nonexistent:/usr/sbin/nologin systemd-resolve:x:992:992:systemd Resolver:/:/usr/sbin/nologin pollinate:x:102:1::/var/cache/pollinate:/bin/false polkitd:x:991:991:User for polkitd:/:/usr/sbin/nologin syslog:x:103:104::/nonexistent:/usr/sbin/nologin uuidd:x:104:105::/run/uuidd:/usr/sbin/nologin tcpdump:x:105:107::/nonexistent:/usr/sbin/nologin tss:x:106:108:TPM software stack,,,:/var/lib/tpm:/bin/false landscape:x:107:109::/var/lib/landscape:/usr/sbin/nologin fwupd-refresh:x:989:989:Firmware update daemon:/var/lib/fwupd:/usr/sbin/nologin sshd:x:109:65534::/run/sshd:/usr/sbin/nologin pcp:x:999:988:Performance Co-Pilot:/var/lib/pcp:/usr/sbin/nologin _chrony:x:110:113:Chrony daemon,,,:/var/lib/chrony:/usr/sbin/nologin admin:x:1000:1000::/home/admin:/bin/bash student:x:1001:1001::/home/student:/usr/bin/zsh ``` 分别使用 5 和 16测试程序,输出如下 ```bash ❯ ./batch_user_add.sh 请输入要添加的用户数量(必须大于10): 5 用户数量必须大于10! ❯ ./batch_user_add.sh 请输入要添加的用户数量(必须大于10): 16 [sudo] password for student: 用户 user01 创建成功。 用户 user02 创建成功。 用户 user03 创建成功。 用户 user04 创建成功。 用户 user05 创建成功。 用户 user06 创建成功。 用户 user07 创建成功。 用户 user08 创建成功。 用户 user09 创建成功。 用户 user10 创建成功。 用户 user11 创建成功。 用户 user12 创建成功。 用户 user13 创建成功。 用户 user14 创建成功。 用户 user15 创建成功。 用户 user16 创建成功。 ❯ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin _apt:x:42:65534::/nonexistent:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin dhcpcd:x:100:65534:DHCP Client Daemon,,,:/usr/lib/dhcpcd:/bin/false messagebus:x:101:102::/nonexistent:/usr/sbin/nologin systemd-resolve:x:992:992:systemd Resolver:/:/usr/sbin/nologin pollinate:x:102:1::/var/cache/pollinate:/bin/false polkitd:x:991:991:User for polkitd:/:/usr/sbin/nologin syslog:x:103:104::/nonexistent:/usr/sbin/nologin uuidd:x:104:105::/run/uuidd:/usr/sbin/nologin tcpdump:x:105:107::/nonexistent:/usr/sbin/nologin tss:x:106:108:TPM software stack,,,:/var/lib/tpm:/bin/false landscape:x:107:109::/var/lib/landscape:/usr/sbin/nologin fwupd-refresh:x:989:989:Firmware update daemon:/var/lib/fwupd:/usr/sbin/nologin sshd:x:109:65534::/run/sshd:/usr/sbin/nologin pcp:x:999:988:Performance Co-Pilot:/var/lib/pcp:/usr/sbin/nologin _chrony:x:110:113:Chrony daemon,,,:/var/lib/chrony:/usr/sbin/nologin admin:x:1000:1000::/home/admin:/bin/bash student:x:1001:1001::/home/student:/usr/bin/zsh user01:x:1002:1004::/home/user01:/bin/sh user02:x:1003:1005::/home/user02:/bin/sh user03:x:1004:1006::/home/user03:/bin/sh user04:x:1005:1007::/home/user04:/bin/sh user05:x:1006:1008::/home/user05:/bin/sh user06:x:1007:1009::/home/user06:/bin/sh user07:x:1008:1010::/home/user07:/bin/sh user08:x:1009:1011::/home/user08:/bin/sh user09:x:1010:1012::/home/user09:/bin/sh user10:x:1011:1013::/home/user10:/bin/sh user11:x:1012:1014::/home/user11:/bin/sh user12:x:1013:1015::/home/user12:/bin/sh user13:x:1014:1016::/home/user13:/bin/sh user14:x:1015:1017::/home/user14:/bin/sh user15:x:1016:1018::/home/user15:/bin/sh user16:x:1017:1019::/home/user16:/bin/sh ```