linux shell编程
来源:互联网 发布:进气压力传感器数据值 编辑:程序博客网 时间:2024/04/30 11:10
主要用于系统管理 自动化管理脚本
自定义变量
变量默认都是string类型定义变量=两边不能有空格例:x=4name="test 1"变量调用调用时开头需要加$符号 echo $x变量查看set [选项] -u 未声明变量报错变量删除unset [变量名](变量名不加$)
环境变量
设置环境变量export 变量名=变量值或变量名=变量值export 变量名env 查看环境变量unset 变量名 删除(变量名不加$)常见环境变量PATH变量 系统查找命令的路径echo $PATH 查看临时生效PATH="$PATH":/apps/sh 增加PATH变量值(变量叠加)
位置参数变量
$n n为数字 $0代表命令本身 $1-$9代表第一到第九个参数,十以上${10}$* 返回命令行中所有参数 参数看成一个整体$@ 返回命令行中所有参数 每个参数区别对待$# 返回命令行中参数的个数
预定义变量
$? 最后一次执行的命令的返回状态 0 表示执行正确 非0 命令作者自定$$ 当前进程的ID号(PID)$! 后台运行的最后一个进程的ID号(PID)
接收键盘输入
read [选项] [变量名]
选项:
-p 提示信息 : 在等待read输入时,提示信息 -t 秒数: read命令会一直等待用户输入,此项指定等待时间 -n 字符数: read命令只接受指定的字符数,就会执行 -s 隐藏输入数据
shell运算符
1.declare 声明变量类型declare[+/-][选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -a 将变量声明为数组型 -i 整型 -x 环境变量 -r 只读变量 不能修改和删除 -p 显示指定变量的被声明的类型 例:b=1 c=2 declare -i a=$b+$c echo $a declare -p a声明数组变量 arr[0]=a arr[1]=a1 arr[2]=a2 declare -a arr[3]=a3 //两种声明方式 echo ${arr} 默认第一个下标的值 echo ${arr[2]} 下标为2的值 echo ${arr[*]} 所有2.数值运算的方法expr或let运算工具 例: aa=11 bb=22 cc=$(expr $aa + $bb) (注:左右两侧必须有空格) let cc=$aa+$bb$((运算式)) 或 $[运算式] 例:$(($aa + $bb)) $[$aa + $bb]
环境变量配置文件
重新加载配置文件source 配置文件 或. 配置文件配置文件位置/etc/profile 登录成功配置文件 设置基本环境变量 调用/etc/profile.d/*.sh 调用~/.bash_profile/etc/profile.d/*.sh 启动/etc/profile.d/*.sh 下shell脚本 (加载语言)~/.bash_profile 调用~/.bashrc 加载用户bin目录 环境变量~/.bashrc 设置别名 /etc/bashrc 设置ps1 判断是否登录执行shell 调用/etc/profile.d/*.sh根据顺序加载配置文件~/.bash_logout 注销时生效的环境变量配置(默认是空的)~/.bash_history 历史命令保存文件(退出登录后才把当次登录记录写入文件)/etc/issue 本地终端登录提示信息/etc/issue.net 远程终端提示信息(由ssh配置文件/etc/ssh/sshd_config决定是否显示,加入"Banner /etc/issue.net"才能显示,需要重启ssh服务)/etc/motd 登录后提示信息注:~用户家目录下 对当前用户生效 /etc/下的文件 对所有用户生效
正则表达式
通配符 * 匹配任意字符 ?匹配任意一个字符 [] 匹配中括号内的一个字符基础正则 * 前一个字符匹配0次或多次 grep "aa*" test.log . 匹配除了换行符外任意的一个字符 ^ 行首 grep "^aa$" test.log $ 行尾 [] 匹配括号中指定的任意一个字符,只匹配一个字符 [^a-zA-Z0-9] [^]取反 \ 转译符 \{n\} 重复出现n次 \{n,\} 最少匹配n次 \{n,m\} 最少匹配n次到m次grep 行提取命令 -v 取反 例:grep "正则" 文件名 ps -ef | grep "正则" 管道符cut 列提取命令 -f 列号: 提取第几列 -d 分隔符: 按照指定分隔符分割(默认制表符) 例:cut -f 2 test.log 截取第二列 cut -f 2,4 -d ":" test.log 以":"分割截取第二列和第四列 限制: 需要分隔符,文件需要一定格式printf 格式化输出命令 printf '输出类型输出格式' 输出内容 输出类型 %ns 输出字符串。n指代输出n个字符 %ni 输出整数。 %m.nf 输出浮点数 m和n是数字,指代输出整数位和小数位 例:%8.2f 输出8位 其中2位小数,6位整数 输出格式 \a 输出警告声音 \b 输出退格键(backspace键) \f 清除屏幕 \n 换行 \r 回车 \t 水平输出退格键(tab键) \v 垂直输出退格键(tab键) 例:printf '%s\t%s\t%s\n' 1 2 3 4 5 6 7 8 9 printf '%s' $(cat test.log)awk 字符串截取 awk '条件1{动作1}条件2{动作2}...' 文件名 例:awk '{printf $2 "\t" $4 "\n"}' test.log ($2表示第二列 $4表示第四列,没有条件直接执行) df -h | awk '{print $5}' BEGIN END cat /etc/password | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}'sed 字符串替换 sed [选项] '[动作]' 文件名 选项: -n 把经过sed命令的处理的行输出到屏幕 -e 允许输出多条sed命令编辑 -i 修改结果直接修改文件,而不是由屏幕输出(必须加-i 才能修改) 动作: a 追加 c 行替换 i 插入 d 删除 p 打印 s 字符串替换 例:sed -n '2p' test.log 打印输出第二行 sed -i '2,4d' test.log 删除2到4行 sed -e '2,4d;s/aa/bb' test.log 删除2到4行 并 将全文aa替换成bb sed '2a test' test.log 第二行追加test字符 sed '2i test' test.log 第二行前面插入test字符 sed '2c test' test.log 第二行替换test sed '2s/aa/sb/g' test.log 第二行替换aa替换成sbsort 排序命令 sort [选项] 文件名 选项: -f 忽略大小写 -n 以数值型排序,默认使用字符串型 -r 反向排序 -t 指定分隔符,默认是制表符 -k n[,m] 按照指定的字段范围排序 第n个字段开始 m字段结束(默认到行尾) 例:sort /etc/passwd 按开头字母a-z排序 sort -r /etc/passwd 按开头字母z-a排序 sort -n -t ":" -k 3,3 /etc/passwd 根据:分隔符从第3个字段按数值排序 wc 统计命令 wc [选项] 文件名 选项: -l 只统计行数 -w 只统计单词书 -m 只统计字符数 例: wc test.log
条件判断与流程控制
文件类型判断 -d 文件 判断文件是否为目录 -e 文件 判断文件是否存在 -f 文件 判断文件是否为普通文件 -r 文件 判断文件是否有读权限 -w 文件 判断文件是否有写权限 -x 文件 判断文件是否有执行权限 文件1 -nt 文件2 判断文件1的修改时间是否比文件2新 文件1 -ot 文件2 判断文件1的修改时间是否比文件2旧 文件1 -ef 文件2 文件1和文件2inode号一致,判断文件1和文件2是否为同一个文件例: [ -d /apps/test ] && echo yes || echo no字符串判断 -z 字符串 判断字符串是否为空 -n 字符串 判断字符串是否非空 字符串1 == 字符串2 判断字符串是否相等 字符串1 != 字符串2 判断字符串是否不相等多重判断 条件1 -a 条件2 逻辑与 条件1 -o 条件2 逻辑或 !条件 条件取反if 语句 if [ 条件表达 ];then 程序 fi 或者 if [ 条件判断 ] then 程序 elif [ 条件判断 ] then 程序 else 程序 ficase 语句 case $变量名 in "值1") 程序1 ;; "值2") 程序2 ;; *) default程序 ;; esacfor 循环 for 变量 in 值1 值2 值3 do 程序 done 或 for ((初始值;循环控制条件;变量变化)) do 程序 donewhile 循环 while [ 条件判断 ] do 程序 done until 循环(与while相反 条件成立终止循环) until [ 条件判断 ] do 程序 done
阅读全文
0 1
- Linux Shell编程
- Linux的shell编程
- linux shell编程摘要
- Linux shell编程
- Linux下Shell编程
- Linux的shell编程
- Linux Shell 编程基础
- Linux的shell编程
- Linux Shell编程(基础教程)
- Linux的shell编程
- Linux的shell编程
- linux Shell编程笔记
- Linux的shell编程
- Linux Shell编程入门
- LINUX/UNIX Shell编程
- linux shell编程总结
- linux Shell编程入门
- linux shell编程
- lucene三---中文分词器
- 3D打印切片软件Cura及CuraEngine原理分析
- 获取图片
- 设计模式的应用场景(21)--备忘录模式
- USB开发基础--USB Monitor2.26 实例讲解USB的枚举(配置)过程
- linux shell编程
- CAD高低版本转换
- 计算机中整数为什么以「补码」的形式存储?
- Xcode8中遇到的问题
- mvc 与 三层架构的区别
- css如何让文字水平垂直居中
- Oracle exp imp 参数show的使用案例
- Vim入门基础
- 北京单身狗都去哪儿了