码迷,mamicode.com
首页 > 系统相关 > 详细

Shell脚本练习

时间:2016-12-09 22:16:11      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:使用   布尔   url   获取   表达式   逻辑运算   文件   cti   数学   

#!/bin/bash
echo "当前日期时间为:"`date`
echo "Hello World !"

#使用变量:可以用单引号,也可以用双引号
your_name="Wang"
echo $your_name
echo ${your_name}
str=‘ShellStudy‘
echo ${str}
#只读变量:不能改变它的值
myUrl="www.wnn1.com"
readonly myUrl
echo "My URL is ${myUrl}"
myUrl="www.wnn.com"
#删除变量:只读变量不能删除
unset myUrl
echo "My URL is ${myUrl}"
#获取字符串长度
echo "str字符串为ShellStudy,字符串长度为:" ${#str}
#提取子字符串:以下实例从字符串第 2 个字符开始截取 4 个字符
string="wangniannian"
echo "截取字符串"${string:1:4}
#查找子字符串
echo `expr index "$string" w`

#for循环
for skill in Ada Coffe Action Java;do
echo "I am good at ${skill}Script"
done


#数组
array_name=(wang love zhu)
#读取数组
echo "数组的第二个元素为:"${array_name[1]}
#使用@可以获取数组中的所有元素
echo "数组的所有元素为:"${array_name[@]}
#取得数组元素的个数
length=${#array_name[@]}
echo "数组的元素个数为:"${length}
#取得数组单个元素的长度
lengthn=${#array_name[2]}
echo "数组的第三个元素的长度为:"${lengthn}


#Shell 传递参数
echo "执行的文件名为:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"

#Shell 运算符:原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
#expr 是一款表达式计算工具,使用它能完成表达式的求值操作。


#算数运算符
val=`expr 2 + 2`
echo "2+2=$val"

a=10
echo "a的值是${a}"
b=20
echo "b的值是${b}"

val_jia=`expr $a + $b`
echo "a+b= $val_jia"

val_jian=`expr $a + $b`
echo "a-b= $val_jian"

# *前面需要有\需要转义
val_cheng=`expr $a \* $b`
echo "a*b=$val_cheng"

val_chu=`expr $b / $a`
echo "b/a=$val_chu"

val_yu=`expr $b % $a`
echo "b%a=$val_yu"

if [ $a == $b ]
then echo "a等于b"
fi
if [ $a != $b ]
then echo "a不等于b"
fi

#关系运算符
#-eq 检测两个数是否相等,相等返回true
if [ $a -eq $b ]
then echo "$a -eq $b : a等于b"
else echo "$a -eq $b : a不等于b"
fi
#ne 检测两个数是否相等,不相等返回true
if [ $a -ne $b ]
then echo "$a -ne $b: a不等于b"
else echo "$a -ne $b: a等于b"
fi
#gt 检测左边的数是否大于右边的,如果是,返回true
if [ $a -gt $b ]
then echo "$a -gt $b: a大于b"
else echo "$a -gt $b: a不大于b"
fi
#lt 检测左边的数是否小于右边的,如果是,返回true
if [ $a -lt $b ]
then echo "$a -lt $b: a小于b"
else echo "$a -lt $b: a不小于b"
fi
#ge 检测左边的数是否大于等于右边的,如果是,返回true
if [ $a -ge $b ]
then echo "$a -ge $b: a大于或等于b"
else echo "$a -ge $b: a小于b"
fi
#le 检测左边的数是否小于等于右边的,如果是,返回true
if [ $a -le $b ]
then echo "$a -le $b: a小于或等于b"
else echo "$a -le $b: a大于b"
fi

#布尔运算符

#逻辑运算符

#字符串运算符

#文件测试运算符

#Shell 输入、输出重定向
#/dev/null 文件:如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
#/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。

#输出重定向
who > users
#追加用>>
echo "菜鸟教程:www.runoob.com" >>users

#输入重定向
wc -l users

#Shell函数
demoFun(){
echo "这是我的第一个shell函数!"
}
echo "---函数开始执行---"
demoFun
echo "---函数执行完毕---"

#Shell 流程控制

if [ $(ps -ef | grep -c "ssh") -gt 1 ]
then echo "true"
else echo "false"
fi

#grep命令
#查找包含wang文本的所有行并打印在屏幕上
grep "wang" /Users/wangniannian/test.sh
#不区分大小写的查找wang文本的所有行并打印在屏幕上
grep -i "wang" /Users/wangniannian/test.sh
#查找包含wang文本的所有行并将匹配行的总数打印在屏幕上
grep -c "wang" /Users/wangniannian/test.sh
#查找包含wang文本的所有行并打印在屏幕上同时显示行号
grep -n "wang" /Users/wangniannian/test.sh
#查找不包含wang文本的所有行并打印仔屏幕上
grep -v "wang" /Users/wangniannian/test.sh


#awk
#用法一:awk ‘{[pattern] action}‘ {filenames} # 行匹配语句 awk ‘‘ 只能用单引号
#每行按空格或TAB分割,输出文本中的1、4项
awk ‘{print $1,$4}‘ log.txt
#格式化输出
awk ‘{printf "%-8s %-10s\n",$1,$4}‘ log.txt

#用法二:awk -F #-F相当于内置变量FS, 指定分割字符,比如用,分割
awk -F, ‘{print $1,$2}‘ log.txt
#或者使用内建变量
awk ‘BEGIN {FS=","} {print $1,$2}‘ log.txt
#使用多个分隔符,先使用空格分割,然后对分割结果再使用“,”分割
awk -F ‘[,]‘ ‘{print $1,$2,$5}‘ log.txt

#用法三:awk -v 设置变量
awk -va = 1 ‘{print $1,$1+a}‘ log.txt

awk -va = 1 -vb = s ‘{print $1,$1+a,$1b}‘ log.txt

#用法四:awk -f {awk脚本} {文件名}
awk -f cal.awk log.txt

#运算符
#过滤第一列大于2的行
awk ‘$1>2‘ log.txt
#过滤第一列等于2的行
awk ‘$1==2 {print $1,$3}‘ log.txt
#过滤第一列大于2并且第二列等于‘Are’的行
awk ‘$1>2 && $2=="Are" {print $1,$2,$3}‘ log.txt


#xargs


#read


#find
find ~ -name adb

find . -name adb

Shell脚本练习

标签:使用   布尔   url   获取   表达式   逻辑运算   文件   cti   数学   

原文地址:http://www.cnblogs.com/tester-bug/p/6151700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!