1. 变量命名规则在Shell脚本编程中变量命名需要遵循一定的规则1. 下划线命名法使用下划线连接单词如user_nameadmin2. 驼峰命名法大驼峰PascalCase每个单词首字母大写如BigCityshenzhen小驼峰camelCase第一个单词首字母小写后续单词首字母大写如bigCityshenzhen重要限制变量名首字母不允许使用数字和特殊符号。2. 变量作用域与全局变量Shell中的变量默认只在当前Shell进程中有效[rootyourself ~]# a10 [rootyourself ~]# echo $a 10 [rootyourself ~]# bash # 开启一个子进程 [rootyourself ~]# echo $a # 子进程中无法访问父进程变量 [rootyourself ~]# exit # 退出子进程 exit [rootyourself ~]# export a # 将a输出为全局变量 [rootyourself ~]# bash [rootyourself ~]# echo $a 10 # 现在子进程可以访问了3. 进程管理基础进程Process与程序Program的区别程序实现某些功能的代码code→ 静态的进程正在运行的程序 → 动态的消耗CPU和内存、对磁盘进行读写或在网络上收发数据sshd是Linux系统中负责远程登录的程序→进程。3.1 查看进程[rootyourself ~]# pstree -p # 查看进程的编号pid [rootyourself ~]# echo $$ # 查看当前bash进程的编号3.2 创建与终止进程示例创建一个简单的C程序并运行#include stdio.h #include unistd.h int main() { while (1) { printf(hello,world\n); sleep(1); } return 0; }编译运行后可以通过pstree -p查看进程树找到进程ID后终止[rootfeng myapp]# kill -9 2632 # 杀死进程4. Shell脚本流程控制4.1 位置变量位置变量用于接收脚本参数#!/bin/bash # pos.sh echo 第1个位置变量 $1 echo 第2个位置变量 $2 echo 第3个位置变量 $3 echo 第4个位置变量 $4 echo 第5个位置变量 $5 echo 一共有 $# 个位置变量 echo 所有的位置变量的内容是 $ echo 所有的位置变量的内容是 $* echo 脚本名是 $0执行结果[rootyourself myapp]# bash pos.sh f z l c h w 第1个位置变量 f 第2个位置变量 z 第3个位置变量 l 第4个位置变量 c 第5个位置变量 h 一共有 6 个位置变量 所有的位置变量的内容是 f z l c h w 所有的位置变量的内容是 f z l c h w 脚本名是 pos.sh4.2 条件判断if语句if语句的条件可以是一个命令如果命令执行成功返回值为0则条件为真1. 单分支# 写法1 if 条件 ; then 命令 fi 写法2 if 条件 then 命令 fi2. 双分支if 条件 ; then 命令1 else 命令2 fi3. 多分支if 条件1 ; then 命令1 elif 条件2 ; then 命令2 elif 条件3 ; then 命令3 else 命令4 fi4.3 循环结构for循环# 基本语法 for 变量 in 集合 do 命令 done 示例批量创建用户 #!/bin/bash for2.sh for i in $ do useradd $i done5. 实战案例用户管理脚本5.1 创建用户并设置密码需求编写脚本create_user.sh实现创建用户并设置密码的功能如果用户存在提示用户已存在然后重新设置密码如果用户不存在则新建用户然后设置密码最后提示操作结果#!/bin/bash # create_user.sh if id $1 /dev/null ; then echo $1 用户已存在 echo $1:$2 | chpasswd else useradd $1 echo $1:$2 | chpasswd echo 新建用户$1成功 fi执行示例[rootyourself myapp]# bash create_user.sh qiqiqi2 123456 新建用户qiqiqi2成功 [rootyourself myapp]# bash create_user.sh qiqiqi2 123456 qiqiqi2 用户已存在5.2 批量创建用户并生成随机密码需求编写脚本create_user_2.sh批量新建用户并生成随机密码如果用户存在提示用户已经存在然后重新设置密码为随机密码10个字符如果用户不存在就新建用户设置密码为随机密码10个字符将用户名和密码保存到文件user_pwd.txt中#!/bin/bash # create_user_2.sh output_fileuser_pwd.txt 清空或创建输出文件 $output_file for username in $ do # 生成10位随机密码包含字母和数字 random_password$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c10) if id $username amp;gt;/dev/null ; then echo $username 用户已存在重置密码 echo $username:$random_password | chpasswd else useradd $username echo $username:$random_password | chpasswd echo 新建用户 $username 成功 fi 保存到文件 echo -e $username\t$random_password gt;gt; $output_file done echo 用户名和密码已保存到 $output_file执行示例[rootyourself myapp]# bash create_user_2.sh f z l cuser_pwd.txt文件内容示例f aB3xY7pQ9m z rT8kL2sN4v l mP5wZ9dF1c c jH6qX3bV8n6. 总结本文涵盖了Shell脚本编程的核心知识点变量命名规范下划线命名法和驼峰命名法的应用场景变量作用域局部变量与全局变量的区别export命令的使用进程管理进程与程序的区别进程查看与终止方法流程控制位置变量、if条件判断、for循环的语法和应用实战应用用户管理脚本的编写包括单个用户创建和批量用户创建这些知识是Shell脚本编程的基础掌握后可以编写出功能强大的自动化脚本提高Linux系统管理效率。
Shell脚本编程基础
1. 变量命名规则在Shell脚本编程中变量命名需要遵循一定的规则1. 下划线命名法使用下划线连接单词如user_nameadmin2. 驼峰命名法大驼峰PascalCase每个单词首字母大写如BigCityshenzhen小驼峰camelCase第一个单词首字母小写后续单词首字母大写如bigCityshenzhen重要限制变量名首字母不允许使用数字和特殊符号。2. 变量作用域与全局变量Shell中的变量默认只在当前Shell进程中有效[rootyourself ~]# a10 [rootyourself ~]# echo $a 10 [rootyourself ~]# bash # 开启一个子进程 [rootyourself ~]# echo $a # 子进程中无法访问父进程变量 [rootyourself ~]# exit # 退出子进程 exit [rootyourself ~]# export a # 将a输出为全局变量 [rootyourself ~]# bash [rootyourself ~]# echo $a 10 # 现在子进程可以访问了3. 进程管理基础进程Process与程序Program的区别程序实现某些功能的代码code→ 静态的进程正在运行的程序 → 动态的消耗CPU和内存、对磁盘进行读写或在网络上收发数据sshd是Linux系统中负责远程登录的程序→进程。3.1 查看进程[rootyourself ~]# pstree -p # 查看进程的编号pid [rootyourself ~]# echo $$ # 查看当前bash进程的编号3.2 创建与终止进程示例创建一个简单的C程序并运行#include stdio.h #include unistd.h int main() { while (1) { printf(hello,world\n); sleep(1); } return 0; }编译运行后可以通过pstree -p查看进程树找到进程ID后终止[rootfeng myapp]# kill -9 2632 # 杀死进程4. Shell脚本流程控制4.1 位置变量位置变量用于接收脚本参数#!/bin/bash # pos.sh echo 第1个位置变量 $1 echo 第2个位置变量 $2 echo 第3个位置变量 $3 echo 第4个位置变量 $4 echo 第5个位置变量 $5 echo 一共有 $# 个位置变量 echo 所有的位置变量的内容是 $ echo 所有的位置变量的内容是 $* echo 脚本名是 $0执行结果[rootyourself myapp]# bash pos.sh f z l c h w 第1个位置变量 f 第2个位置变量 z 第3个位置变量 l 第4个位置变量 c 第5个位置变量 h 一共有 6 个位置变量 所有的位置变量的内容是 f z l c h w 所有的位置变量的内容是 f z l c h w 脚本名是 pos.sh4.2 条件判断if语句if语句的条件可以是一个命令如果命令执行成功返回值为0则条件为真1. 单分支# 写法1 if 条件 ; then 命令 fi 写法2 if 条件 then 命令 fi2. 双分支if 条件 ; then 命令1 else 命令2 fi3. 多分支if 条件1 ; then 命令1 elif 条件2 ; then 命令2 elif 条件3 ; then 命令3 else 命令4 fi4.3 循环结构for循环# 基本语法 for 变量 in 集合 do 命令 done 示例批量创建用户 #!/bin/bash for2.sh for i in $ do useradd $i done5. 实战案例用户管理脚本5.1 创建用户并设置密码需求编写脚本create_user.sh实现创建用户并设置密码的功能如果用户存在提示用户已存在然后重新设置密码如果用户不存在则新建用户然后设置密码最后提示操作结果#!/bin/bash # create_user.sh if id $1 /dev/null ; then echo $1 用户已存在 echo $1:$2 | chpasswd else useradd $1 echo $1:$2 | chpasswd echo 新建用户$1成功 fi执行示例[rootyourself myapp]# bash create_user.sh qiqiqi2 123456 新建用户qiqiqi2成功 [rootyourself myapp]# bash create_user.sh qiqiqi2 123456 qiqiqi2 用户已存在5.2 批量创建用户并生成随机密码需求编写脚本create_user_2.sh批量新建用户并生成随机密码如果用户存在提示用户已经存在然后重新设置密码为随机密码10个字符如果用户不存在就新建用户设置密码为随机密码10个字符将用户名和密码保存到文件user_pwd.txt中#!/bin/bash # create_user_2.sh output_fileuser_pwd.txt 清空或创建输出文件 $output_file for username in $ do # 生成10位随机密码包含字母和数字 random_password$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c10) if id $username amp;gt;/dev/null ; then echo $username 用户已存在重置密码 echo $username:$random_password | chpasswd else useradd $username echo $username:$random_password | chpasswd echo 新建用户 $username 成功 fi 保存到文件 echo -e $username\t$random_password gt;gt; $output_file done echo 用户名和密码已保存到 $output_file执行示例[rootyourself myapp]# bash create_user_2.sh f z l cuser_pwd.txt文件内容示例f aB3xY7pQ9m z rT8kL2sN4v l mP5wZ9dF1c c jH6qX3bV8n6. 总结本文涵盖了Shell脚本编程的核心知识点变量命名规范下划线命名法和驼峰命名法的应用场景变量作用域局部变量与全局变量的区别export命令的使用进程管理进程与程序的区别进程查看与终止方法流程控制位置变量、if条件判断、for循环的语法和应用实战应用用户管理脚本的编写包括单个用户创建和批量用户创建这些知识是Shell脚本编程的基础掌握后可以编写出功能强大的自动化脚本提高Linux系统管理效率。