Linux-shell编程

shell编程

1.shell简介

  • 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。

  • 终端登录成功进去时,实际上上打开了了一个shell进程

  • 命令在shell提示符(可配置)后键入,提示符通常为一个“$”或“#”,超级用户默认为 “#”

2.终端常用快捷键

  • 中断当前命令(ctrl+c)

  • 结束输入(ctrl+d),如果在shell中使用,使得用户注销。

  • 重复刚才键入过的命令(上下光标键,类似dos操作系统中的doskey)

  • 命令和文件补全(tab)

  • 很多程序的退出命令(q)

  • 同一个终端设置多标签(ctrl + shift + t)

  • 光标移动到当前行的行首(ctrl + a)

  • 光标移动到当前行的行尾(ctrl + e)

3.shell变量

3.1变量类型

  • 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

3.2变量的命名

  • 格式: 变量名=值(等号两边不能有空格)
[root@localhost test]# xx=88

3.3变量的引用
格式: $变量名

 [root@localhost test]# echo $xx
88

3.4变量的取消
格式: unset 变量名

[root@localhost test]# unset xx
[root@localhost test]# echo $xx
[root@localhost test]# (输出为空)

3.5环境变量
语法: export

		定义环境变量(影响所有子shell):
		[root@localhost test]# export yy=20 
		 
		把本地变量转化为环境变量
		[root@localhost test]# export xx

4.shell脚本

4.1创建脚本文件步骤

Step1利用vi编辑如下脚本并保存成first.sh

#!/bin/bash
echo “Hello,welcome to Linux world”
echo “Today is: $(date)” 

Step2 设置执行权限: chmod u+x first.sh
Step3执行脚本: ./first.sh 或 sh first.sh 或 bash first.sh

4.2常用的Shell预定义变量。

  • $#:位置参数的数量。
  • $*:所有位置参数的内容。
  • $?:命令执行后返回的状态。
  • $$:当前进程的进程号。
  • $!:后台运行的最后一个进程号。
  • $0:当前执行的进程名。

4.3运行一个关于命令位置参数的脚本文件 mysh.sh

#!/bin/bash
echo “完整的命令行:$0$*”
echo “程序是:$0”
echo “所有的参数:$*”
echo “参数个数:$#”
echo “第1个参数: $1”

运行结果如下:

[root@localhost test]# ./mysh.sh aa bb cc dd
“完整的命令行:./mysh.shaa bb cc dd”
“程序是:./mysh.sh”
“所有的参数:aa bb cc dd”
“参数个数:4”
“第1个参数: aa”

4.4Shell变量及表达式 –缺省参数

问题:如果参数没输入,但程序中需要怎么办?

VAR=${参数-word}   :有则用参数,否则用word
VAR=${参数=word}  :有则用参数, 否则两个用word
VAR=${参数? word} :有则用参数,否则报错退出
VAR=${参数+word}  :有则用word,否则不做 

注意:上述四条经常用在位置参数的使用上。

测试脚本:

#!/bin/bash
LEFT=${1-100}       #第一个参数缺省为100
RIGHT=${2-100}      #第二个参数缺省为100
RE=`expr $LEFT + $RIGHT`   #进行相加
echo "$LEFT + $RIGHT = $RE"

测试结果:

[root@localhost test]# ./mysh.sh
100 + 100 = 200
[root@localhost test]# ./mysh.sh 50
50 + 100 = 150
[root@localhost test]# ./mysh.sh 50 50
50 + 50 = 100

4.5-Shell变量表达式-概述

Shell中的变量表达式主要利用各种测试语句、条件来获得字符串、文件、数字等所处的状态。
表达式的操作符主要包括:
字符操作符: =, !=, -n , -z
数字操作符:-eq, -ne, -ge, -gt, -le, -lt
逻辑操作符:!, -a, -o
文件操作符:-d, -f, -L,-r, -w, -x, -s, -e, -z,-c, -b,-o

以使用 test 命令来测试上述各种表达式状态。
test是Shell程序中的一个表达式,通过和Shell提供的if等条件语句相结合可以方便地测试字符串、文件状态和数字。其语法如下:
test [表达式]
表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。

4.6-Shell变量表达式-字符操作符

作用:测试字符串是否相等,长度是否为零,字符串是否为NULL。
常用的字符串比较符号如下。
=:比较两个字符串是否相同,相同则为“是”。
!=:比较两个字符串是否相同,不同则为“是”。
-n:比较字符串的长度是否大于0,如果大于0则为“是”。
-z:比较字符串的长度是否等于0,如果等于0则为“是”。

测试脚本

#!/bin/bash
A="abcd"; test $A = "abcd"; echo $?
A=" "; test –z $A; echo $?
test –n $A; echo $?
test –z $A; echo $?

测试结果

[root@localhost test]# ./mysh.sh
0
0
0
0
#0代表为 是

4.7-Shell变量表达式-数字操作符

test语句不使用“>?”类似的符号来表达大小的比较,而是用整数来表示,常用的数字比较符号如下。
-eq:相等。
-ge:大于等于。
-le:小于等于。
-ne:不等于。
-gt:大于。
-lt:小于。

测试脚本

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

测试结果

[root@localhost test]# ./mysh.sh
两个数相等!

4.8-Shell脚本流程控制—分支语句if

  • 单分支(常见)
	if [ 条件 ]
         then
             语句
         fi

或者(常见)

  if [ 条件 ]; then
           语句
       fi
  • 双分支
  if [ 条件 ]
  then
     语句
  else
     语句
  fi
  • 多分支
  if [ 条件 ];then
     语句
  elif [ 条件 ];then
     语句
  else
     语句
  fi

注意:[ 条件 ]中,条件前后必须留有一个空格
[];then连在一起写,必须加上分号;

测试脚本

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

测试结果

[root@localhost test]# ./mysh.sh
a 小于 b

4.9-Shell脚本流程控制—for循环

语法1:

for  变量 [ in 数值列表]    
do           #省略 [ ]  则表示取编所有位置参数
   命令           
done

语法2:

len=10;        #指定循环次数
for  (( i=0; i< “$len”; i=i+1 ))
do
  命令
done

测试脚本

#!/bin/bash
#第一种for循环
for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

#第二种for循环
sum=0
for((i=1;i<101;i=i+1))
do   
let sum=sum+$i
done
echo $sum

测试结果

[root@localhost test]# ./mysh.sh
The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5
5050

4.9-Shell脚本流程控制—while循环

语法:

while 条件命令为真
do
   命令
done 

无限循环:

while :       
do
   命令
done

测试脚本

#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

测试结果

[root@localhost test]# ./mysh.sh
1
2
3
4
5
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值