Shell编程

Shell编程

一、基础概念

  1. 先创建一个文件以.sh为后缀名。
vi hello.sh    

2.打开文件后,先写声明

#! /bin/bash     //文件声明

3、运行脚本

 #1、输入脚本的绝对路径或相对路径
  #先修改文件的权限,让文件可以执行
  chmod u+x hello.sh   #假设脚本文件为hello.sh
  ./hello.sh   #成功运行
#2、使用bash或者sh+脚本
  sh hello.sh  #成功执行
  #sh 可以不用修改文件权限,普通文件也可以执行
#3、使用source执行。
  source hello.sh
  
方法1,2都会开启新的bash进程
方法3不会开启新进程
影响:
定的环境变量不知道在哪层。所以要加上export,

二、基础入门

1、变量

  1. 名字只能是英文字母,下划线,数字,首个字符不能以数字开头
  2. 中间不能有空格,可以使用下划线
  3. 不能用标点符号
  4. 不能使用bash里面的关键字

变量类型:

  • 局部变量
    局部变量在脚本或命令中定义,仅当前shell实例中有效,其它shell启动的程序不能访问。
  • 环境变量
    所有的程序,包括shell启动的程序,都能访问环境变量。
  • Shell变量
    shell变量由shell程序设计的特殊变量。
#变量的声明
name=zhangsan

#变量的调用
echo $name  #打印出 zhangsan

readonly name    #把name设置成只读变量

#删除变量
unset name  #删除name变量

2、字符串

字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号:

  • 单引号里面的字符都会输出,变量无效。

双引号:

  • 双引号里面可以有变量。
  • 双引号里面可以出现转义字符。
name=zhangshan
username="hello,&name"  
echo $username   #输出结果 hello,zhangsan
username='hello,&name'
echo $username   #输出结果 hello,&name

#打印字符串的长度
echo ${#name}  #打印出字符串长度

3、数组

  • bash支持一维数组(不支持多维数组),并且没有限定数组大小。
  • 数组元素的下标从0开始,获取数组元素要利用下标获取。
#定义数组
数组名={值1 值2 值3.。。。}    #每个值用空格隔开
favl={"张三" "王五" "李达"}
#读取数组 ${数组名[下标]}
fav=${favl[0]}
#使用@ 获取数组全部元素
echo ${favl[@]}
#获取数组长度
len=${#favl[@]}

4、Shell的注释

#为Shell的注释

#这就是Shell的注释符

5、参数传递

参数处理参数说明
$#传递到脚本的参数个数
$*以一个单字符显示所有向脚本传递的参数
$$脚本运行的当前进程ID
$!后台运行的最后一个进程ID
$?显示最后命令的退出状态,0表示没有错误,其他数值表示有错误
$0执行文件的名字
#hello.sh  文件内容
echo "文件名字=$0"
echo "第一个参数=$1"
echo "第二个参数=$2"
echo "第三个参数=$3"
#执行hello.sh文件,并传递参数
. /hello.sh 11 22 33
#运行结果
文件名字=/hello.sh
第一个参数=11
第二个参数=22
第三个参数=33

6、运算符

  • 关系运算符
  • 算数运算符
  • 布尔运算符
  • 逻辑运算符
  • 字符串运算符
  • 文件测试运算符
6.1、算数运算符
a=20
b=10
var=` expr $a + $b `      #`这个字符在esc下面,` `包起来的内容当做命令使用
echo "a+b : $var"

var=` expr $a - $b `
echo "a-b :$var"
var=` expr $a \* $b `   #*是通用符,需要转义,转成乘号
echo "a*b :$var"
var=` expr $a / $b `
echo "a/b :$var"
var=` expr $a % $b `
echo "a%b :$var"

if[ $a == $b ]
then
echo "a==b"
fi

if[ $a != $b ]
then
echo "a!=b"
fi
6.2、关系运算符
a=10
b=20
if [ $a -eq $b ]
then 
  echo "$a -eq $b : a等于b"
else
  echo "$a -eq $b : a不等于b"
fi

if [ $a -ne $b ]
then 
  echo "$a -ne $b : a不等于b"
else
  echo "$a -ne $b : a等于b"
fi

if [ $a -gt $b ]
then 
  echo "$a -gt $b : a大于b"
else
  echo "$a -gt $b : a不大于b"
fi

if [ $a -lt $b ]
then 
  echo "$a -lt $b : a小于b"
else
  echo "$a -lt $b : a不小于b"
fi
if [ $a -ge $b ]
then 
  echo "$a -ge $b : a大于等于b"
else
  echo "$a -ge $b : a不大于等于b"
fi
if [ $a -le $b ]
then 
  echo "$a -le $b : a小于等于b"
else
  echo "$a -le $b : a不小于等于b"
fi
6.3、布尔运算符
#组合关系运算符

if [$a -lt 100 -a $b -gt 15]
then
echo "$a小于100并且b大于15 :返回true"
else
echo "返回false"
fi

if [$a -lt 100 -o $b -gt 15]
then
echo "$a小于100或者b大于15 :返回true"
else
echo "返回false"
fi
6.4、逻辑运算符
if [ [ $a -lt 100 && $b -gt 15 ] ]
then
echo "返回true"
else
echo "返回false"
fi
if [[ $a -lt 100 || $b -gt 15 ]]
then
echo "返回true"
else
echo "返回false"
fi
6.5、字符串运算符
a="abc"
b="efg"
if [ $a == $b ]
then 
echo "$a=$b :a等于b"
else
echo "不等于"
fi
if [ -z $a ]
then
echo"字符串长度为0"
else
fi
if [ -n $a ]
then
echo"字符串长度不为0"
else
fi
if [ $a ]
then
echo"字符串不为空"
else
fi

6.6、文件测试运算符
file="/var/node"

if[ -r $file ]
then
echo"文件可读"
else"文件不可读"
fi
if[ -w $file ]
then
echo"文件可写"
else"文件不可写"
fi
if[ -x $file ]
then
echo"文件可执行"
else"文件不可执行"
fi
if[ -f $file ]
then
echo"文件为普通文件"
else"文件为特殊文件"
fi
if[ -d $file ]
then
echo"文件是目录"
else"文件不是目录"
fi
if[ -s $file ]
then
echo"文件不为空"
else"文件为空"
fi
if[ -e $file ]
then
echo"文件存在"
else"文件不存在"
fi

7、echo打印数据

#显示普通字符串
echo "Hello,world"
#显示转义字符
echo "\"Hello,world\""
#显示变量
name="zhangsan"
echo "$name"
#显示换行
echo -e "OK! \n"
echo "Hello,word"
#显示不换行
echo -e "OK! \c"
echo "Hello,World"
##显示结果定向至文件
echo "Hello,world" > myfile
#原样输出字符串
echo '$name\"'
#显示命令执行结果
echo `date`

8、test命令

test,包含6、运算符里面的全部操作。区别是:test时不需要[ ]符号。

if test $[a] == $[b]
then
echo "a==b"
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值