linux shell编程基础
来源:互联网 发布:i.t是什么牌子 知乎 编辑:程序博客网 时间:2024/05/29 04:48
1.变量
1)变量的分类
- 用户自定义变量
- 环境变量:主要保存和系统操作环境相关的数据。
- 位置参数变量:主要用来向脚本当中传递参数或定义的
- 与定义变量:Bash中已经定义好的变量
2)用户自定义变量
- 变量调用: echo $x
- 变量设置: set
- 变量删除: unset x
3)环境变量
- 设置环境变量
- export 变量名=变量值
查看环境变量
- set:查看所有变量
- env:查看环境变量
3)位置参数变量
参数说明
例子:
#!/bin/bashecho "parameter is: $* "echo "parameter also is: $@"echo "parameter number is: $#"echo "===============*==========="for i in "$*" do echo "the parameters is:$i" doneecho "===============@================="for i in "$@" do echo "the parameter is:$i" done
4)预定义变量
变量说明:
read接收键盘输入
- -p “提示信息” :在等待read输入时,输出提示信息
- -t “秒数”:read命令会一直等待用户输入,指定等待时间
- -n “字符数”:read命令只接受指定的字符数,就会执行
- -s:隐藏输入的数据,适用于机密信息的输入
2.Shell运算符
1)declare申明变量类型
选项
- -:给变量设定属性类型
- +:取消变量的类型属性
- -a:将变量申明为数组型
- -i:整数型
- -x:环境变量
- -r:只读
- -p:显示指定变量被声明的类型
2)“$((运算式)) 或“$[运算式]”
3.环境变量配置文件
1)source命令
重新加载配置文件
2)配置文件加载顺序
3)其他配置文件
- ~/.bash_logout :退出登陆时加载的配置文件
- ~/etc/issue : 登陆后的欢迎信息
- ~/etc/motd : 登陆后的欢迎信息
正则表达式
1)基础正则表达式
2)字符串截取命令
cut字段提取命令:
- -f n:截取第n列
- -d “”:确定分隔符
3)printf输出内容
输出类型:
- %ns:输出字符串 ,表示输出几个字符
- %ni:输出整数,n代表输出几个数字
- %m.nf:输出浮点数,m和n代表整数位数和小数位数
4)awk命令
- 格式:
- awk ‘条件1{动作1}条件2{动作2}…’文件名
例子:
cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
5)sed命令
- 格式:
- sed [选项] [动作] [文件名]
- 选项:
- -n:只把经过sed处理过的行输出到屏幕
- -e:允许对输入数据应用多条sed命令编辑
- -i:用sed命令修改的结果直接修改读取的文件,而不是由屏幕输出
动作:
- -a:追加,在当前行后添加一行或者多行
- -c:行替换,用后面的字符串替换原数据行
- -i:插入当前行插入一行或多行
- -d:删除
- -p:打印,输出指定的行
- -s:字串替换
例子:
sed -n '2p' student.txt
打印student.txt的第二行sed '2,4d' student.txt
删除第二到第四行sed '2a test1 test1 test1 test1' student.txt
在第二行添加内容sed '4c cang bugide' student.txt
替换第四行
6)排序命令sort
- 格式:
- sort [选项] 文件名
选项:
- -f:忽略大小写
- -n:以数值型进行排序
- -r:反向排序
- -t:指定分隔符(默认为制表符)
- -k n[,m] :按照指定的字段范围排序
7)统计命令wc
- 格式:
- wc [选项] 文件名
选项
- -l:只统计行数
- -w:只统计单词数
- -m:只统计字符数
条件判断与流程控制
1判断条件
1)按照文件类型进行判断
2)按照文件权限进行判断
3)两个文件进行比较
4)两个整数之间比较
5)字符串的判断
2.条件判断的例子
判断磁盘利用率是否大于10%
#!/bin/bashtest=$( df -h | grep sda2 | awk '{print $5}' | cut -d "%" -f 1)if [ "$test" -gt 10 ] then echo "the use is greater 10%" fi
判断输入是否为文件
#!/bin/bashread -p "Please input a filename : " fileif [ -z "$file" ] then echo "Error,please input filename" exit 1elif [ ! -e "$file" ] then echo "Your input is not a file" exit 2elif [ -f "$file" ] then echo "$file is a a regulare file"elif [ -d "$file" ] then echo "$file is a directory!!"fi
判断apache是否启动
#!/bin/bashtest=$(ps aux | grep httpd | grep -v grep)if [ -n "$test" ] then echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log else service httpd start &> /dev/null echo "$(date) reastart httpd !!" >> /tmp/autostart-err.logfi
case选择
#!/bin/bashecho "feng : input 1" echo "fu : input 2"echo "bo : inpit 3"read -t 30 -p "please input " chocase "$cho" in "1") echo "feng" ;; "2") echo "fu" ;; "3") echo "bo" ;; *) echo "please input right choice" ;;esac
3 for循环例子
批量添加用户
#!/bin/bashread -p "Please input username " -t 30 nameread -p "Please input the number of users " -t 30 numread -p "Please input the password of users:" -t 30 passif [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ] then y=$(echo $num | sed 's/[0-9]//g') if [ -z "$y" ] then for((i=1;i<=$num;i=i+1)) do /usr/sbin/useradd $name$i &>/dev/null echo $pass | /usr/bin/passed --stdion $name$i &> /dev/null done fifi
0 0
- 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 Shell编程基础
- Linux Shell编程基础
- Linux Shell编程基础
- Linux基础Shell编程
- ceph中radosgw的put object代码走读
- JSPatch热修复的使用的那些深坑
- 【USACO】2002 Feb Cow Cycling 奶牛赛车
- SIP应答消息状态码与功能
- Hangfire下载安装与简单使用
- linux shell编程基础
- 摘要1:DTS语法说明
- locate命令找不到
- java api模拟登录有道翻译
- 疯狂H5笔记 - CSS选择器
- ceph中radosgw的get object代码走读
- 一些你需要知道的布局优化技巧
- jms异常 weblogic.jms.client.JMSConnectionFactory cannot be cast to javax.jms.ConnectionFactory
- python之使用__future__