Linux | SHELL

定义

shell是Unix/Linux操作系统中用户与系统交互的接口

功能

  1. 命令解释器
  2. 作为一种高级程序设计语言可以编写出代码简洁、功能强大的程序

shell脚本

vi mytest           //建立脚本   新建出的脚本是没有可执行权限的
sh mytest           //执行脚本   bash mytest
chmod u+x mytest    //mytest加上可执行权限
source mytest       //有可执行权限的脚本执行      . mytest

shell变量

  1. 环境变量
export myname=li  //设置新的环境变量
env               //显示所有环境变量
echo $myname      //显示某个环境变量
  1. 系统变量
$0    //shell程序名
$1-$9 //第1-9个命令行参数的值
$*    //传递给脚本的所有参数,全部参数合为一个字符串
$#    //传递给参数的个数
$$    //当前进程的进程id
$?    //最后执行的命令的退出状态

注:
命令行参数大于9个时,可以使用shift指令将参数左移

shift     //左移1个
shift n   //左移n个

$

  1. 自定义变量
  • 变量名=字符串
    注:等号两边不能有空格;使用变量时需要加上$
  • 当赋给变量的值含有空格、制表符或者换行符,要是用双引号把这个字符串括起来。例如:
    a=" Today is Sunday. "
  • 变量值可以作为某个字符串中的一部分
    例如:

[root@localhost ~]# s=world [root@localhost ~]# echo Hello$s
Helloworld

  • 变量名出现在一个长字符串开头或者中间,应该用“{ }”把变量名扩起来。
例如: [a@localhost ~] $ dir=/home/user1/
              [a@localhost ~] $ echo ${dir}m1.c
              /home/user1/m1.c
  1. shell变量的数学运算
  • expr命令

例如:
[root@localhost ~]# a=2 [root@localhost ~]# expr 8 + $a
10
[root@localhost ~]# expr 6 * $a
expr :语法错误
[root@localhost ~]# expr 6 \ * $a
12
例如:
[root@localhost ~]# cat exam
# ! /bin/bash
a=5
b=expr 3 + $a
echo “b=$b”
exit 0
[root@localhost ~]# sh exam
b=8

注意:在运算符的前后都留有空格,否则expr不对表达式进行计算,而直接输出它们。

  • let

例如:
[root@localhost ~]#b=10
[root@localhost ~]#let c=5+$b
[root@localhost ~]#echo $c
15

转义符

在这里插入图片描述

//转义符应用举例
[root@localhost ~]#  cat  exam 
echo  "1. home  directory  is  $HOME"      
echo  '2. home  directory  is  $HOME'      	 
echo  "3. current  directory  is  `pwd` "
echo  '4. current  directory  is  `pwd` '       
//运行结果:
[root@localhost ~]#  ./exam 
1. home  directory  is  /home/zhang
2. home  directory  is  $HOME
3. current  directory  is  /home/zhang
4. current  directory  is  `pwd`

shell控制语句

条件测试与判断语句

test expression
test -s filename
["$a"="$b"]
test 10 -gt 13
  • 文件测试
    在这里插入图片描述
  • 字符串测试
    在这里插入图片描述
  • 数值测试在这里插入图片描述
  • 逻辑操作符
    在这里插入图片描述
//相关逻辑运算符测试语句。
[root@localhost ~]# [ ! 5 -le 0 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 -gt 3 -a 5 -lt 10 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 -gt 3 -o 5 -lt 5 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# test \( 5 -gt 0 -a 5 -lt 10 \) -a 5 -gt 3
[root@localhost ~]# echo $?
0

循环控制语句

  • if判断
if expression  //如果if为真 则执行statement1  否则执行statement2
then statement1
else statement2
fi
  if expression1
	then statement1 
	....
	elif expression2
	then statement2
	...
	fi
  • for
  1. 列表for循环
    语法格式如下:
	for var in {list}  
	do  
	  Loop body
	done  
  1. 不带列表的for循环
  语法格式如下:
	for var    
	do  
	  Loop body
	done  
  1. 类似C语言的for循环语句
	语法格式如下: 	for ((expression1;expression2;		expression3)) 
	do  
	  Loop body  
	done
  • while循环
语法格式如下:
	while ((expression))
	do  
	    Loop body  
	done 
//编写程序,这段程序对各个给定的位置参数,首先判断其是否是普通文件,若是,则显示其内容;否则,显示它不是文件名的信息。每次循环处理一个位置参数$1,利用shift命令可把后续位置参数左移。
       while [ $1 ]
       do
                if [ -f  $1 ]
                then echo " display : $1 "
                          cat $1
                else echo " $1 is not a file name . " 
                fi 
                shift
      done

  • break语句
break n    //n层循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值