暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell脚本基础知识点汇总

22


1 应用场景

shell脚本主要是为了减少重复性的工作,可以通过组合常用命令、控制结构、函数等实现各种任务的自动化。

  • 系统管理与运维
  • 自动化部署
  • 定时任务和调度
  • 批量处理任务
  • 自动化测试
  • 数据处理与转换
  • 用户管理与权限控制
  • 网络和系统监控

2、Shell变量

2.1 用户定义变量

变量名描述示例
USER_NAME用户定义变量USER_NAME="liyb"
FILE_PATH用户定义变量FILE_PATH="/home/user/file.txt"

2.2 环境变量

变量名描述示例
HOME当前用户的家目录echo $HOME
PATH系统可执行文件路径echo $PATH
USER当前用户名echo $USER
SHELL当前使用的shell程序echo $SHELL
PWD当前工作目录echo $PWD
LANG系统的语言和地区设置echo $LANG
HOSTNAME当前主机名echo $HOSTNAME

2.3 特殊变量

变量名描述示例
$0脚本的名称echo $0 — 输出脚本文件名
2...脚本传递的参数echo 2 — 输出第一个和第二个参数
$#脚本传递的参数个数echo $# — 输出参数个数
$@所有传递给脚本的参数(保留空格)echo "$@" — 输出所有参数
$*所有传递给脚本的参数(作为一个字符串)echo "$*" — 输出所有参数(空格分隔)
$?上一个命令的退出状态码echo $?
$$当前脚本的进程 IDecho $$
$!最近在后台运行的命令的进程 IDecho $!

2.4 只读变量

变量名描述示例
readonly使变量成为只读,不能修改readonly MY_VAR="Hello World" MY_VAR="New Value"(会报错)

2.5 数组变量

变量名描述示例
fruits定义一个数组变量fruits=("Apple" "Banana" "Cherry")
${fruits[0]}访问数组中的第一个元素echo ${fruits[0]}
${#fruits[@]}获取数组的长度echo ${#fruits[@]}
${fruits[@]}打印数组中的所有元素echo ${fruits[@]}

注意:fruits名称可以随意,只是个数组名字

2.6 命令替换(Command Substitution)

变量名描述示例
$(command)命令替换,将命令的输出作为变量的值DATE=DATE

2.7 引用和转义

变量名描述示例
"双引号,允许变量扩展,保留空格echo "$HOME"
'单引号,禁止变量扩展,按字面值输出echo '$HOME'
\转义字符,用于转义特殊字符echo "Hello $USER"

3 文件测试表达式

有两种方式:

使用 test 命令:

test <表达式>

复制

使用 [ ](推荐,语法更常用):

[ <表达式> ]

复制

3.1 常用操作符

操作符描述示例
-e检测文件是否存在[ -e file ]
-f检测是否为普通文件[ -f file ]
-d检测是否为目录[ -d directory ]
-L检测是否为符号链接[ -L link ]
-r检测文件是否可读[ -r file ]
-w检测文件是否可写[ -w file ]
-x检测文件是否可执行[ -x file ]
-s检测文件是否非空[ -s file ]
-z检测字符串是否为空[ -z string ]
-b检测是否为块设备[ -b file ]

3.2 逻辑运算符

操作符描述示例
-a逻辑与(AND)[ -r file -a -w file ]
-o逻辑或(OR)[ -r file -o -w file ]
!逻辑非(NOT)[ ! -e file ]

3.3 文件比较

操作符描述示例
-ntfile1 比 file2 新[ file1 -nt file2 ]
-otfile1 比 file2 旧[ file1 -ot file2 ]
-ef是否为同一文件[ file1 -ef file2 ]

3.4 整数二元比较操作符

操作符描述示例
-eq等于[ "b" ]
-ne不等于[ "b" ]
-lt小于[ "b" ]
-le小于或等于[ "b" ]
-gt大于[ "b" ]
-ge大于或等于[ "b" ]


以上是一些常用的操作符总结,后续将分享实用的shell脚本。

如有帮助,请点个赞和“在看”!如有不足,敬请指出!感谢你的关注与支持。

路虽远,行则将至!

事虽难,做则必成!共勉!


往期精彩文章


文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论