初识shell

目录

1 认识shell

1.1 什么是shell

1.2 shell脚本

2 shell变量

2.1 变量的命名要求

2.2 变量的使用与设置

2.2.1 变量的分类

2.2.2 变量的使用

2.2.3 变量的赋值

3 编写脚本

3.1 shell脚本创建过程

3.2 第一个shell脚本

3.3 用shell解鸡兔同笼

3.3.1 read

3.3.2 解题

3.4 用shell脚本批量创建用户

3.4.1 for的语法

3.4.2 if的语法

3.4.3 创建100个用户


1 认识shell

1.1 什么是shell

shell既是一种应用程序,又是一种程序设计语言。我们常说的shell一般是指shell语言

shell作为一种程序时通常是指用户和操作系统内核之间的交互界面。在这个界面下,用户可以通过命令行输入命令,执行各种操作,如启动程序、管理文件、进行系统设置等。

1.2 shell脚本

shell脚本,也就是shell script,是一种为shell编写的脚本程序。它是由一系列命令组成的文本文件。这些命令按顺序执行,可以用来自动化执行一系列的操作,节省用户的时间。

2 shell变量

2.1 变量的命名要求
  1. 区分大小写
  2. 不能使用程序中保留的字和变量,如if,for
  3. 只能使用数字、字符以及下划线,且不能以数字开头
2.2 变量的使用与设置
2.2.1 变量的分类
  • 普通变量:生效范围为当前shell进程
  • 环境变量:生效范围为当前shell进程及其子进程
  • 本地变量:生效范围为当前shell进程中的某段代码,通常指函数
2.2.2 变量的使用

在变量名前加上$或者以${变量}的方式都可以使用变量,但我比较喜欢第二种

  • #变量的使用(echo):
    [root@localhost ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@localhost ~]# echo ${PATH}
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@localhost ~]#
    
    #在变量名前加上$或者${变量}使用变量的区别
    [root@localhost ~]# echo $PATH123  
    
    [root@localhost ~]# echo ${PATH}123
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin123
    [root@localhost ~]# 
2.2.3 变量的赋值
  • 变量设置的规则
    • 变量和变量的值以一个封号链接
      name=Root
    • 等号两边不能直接接空格
      #错误示范
      name = Root
      name=dzzx my
    • 变量的值若有空格可使用双引号或单引号将内容连起来
      [root@localhost ~]# echo $name
      
      [root@localhost ~]# name="dzzx my"
      [root@localhost ~]# echo $name    
      dzzx my
      [root@localhost ~]#
  • 双引号内的变量会被替换为变量的值
    [root@localhost ~]# echo $var
    
    [root@localhost ~]# var="lang is $LANG"  
    [root@localhost ~]# echo $var
    lang is en_US.UTF-8
    [root@localhost ~]# 
  • 单引号中的变量不会被替换为变量的值
    [root@localhost ~]# var='lang is $LANG'
    [root@localhost ~]# echo $var           
    lang is $LANG
    [root@localhost ~]# 
  • 取消变量:unset 变量名
    [root@localhost ~]# unset var
    [root@localhost ~]# echo $var
    
    [root@localhost ~]# 

3 编写脚本

3.1 shell脚本创建过程

第一步:使用文本编辑器创建文件

第二步:在开头指定脚本解释器

#!/bin/bash

第三步:给文件加上可执行的权限

第四步:运行脚本

3.2 第一个shell脚本

不想用经典的hello world了

[root@localhost ~]# cat 1.sh 
#!/bin/bash
echo "Quick brown fox jumps over the lazy dog 1234567890"
[root@localhost ~]# sh 1.sh 
Quick brown fox jumps over the lazy dog 1234567890
[root@localhost ~]# 
3.3 用shell解鸡兔同笼
3.3.1 read

read命令用于从标准输入读取数值

Usage: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

Eg:
#获取变量Heads的值,并显示提示文本
[root@localhost ~]# read -p "How many heads?" Heads
How many heads?30
[root@localhost ~]# echo $Heads
30
[root@localhost ~]# 
3.3.2 解题

题目:今有鸡与兔同在一个笼子里,已知头有30,腿有80,问鸡与兔各有多少只?

脚本:

#!/bin/bash
read -p "How many heads?" Heads
read -p "How many foot?" Foot
Rabbit=$(((${Foot} - 2 * ${Heads})/2))
Chicken=$((${Heads}-${Rabbit}))
echo "There are ${Chicken} chickens and ${Rabbit} rabbits !"

答案:

[root@localhost ~]# . 2.sh   
How many heads?30
How many foot?80
There are 20 chickens and 10 rabbits !
[root@localhost ~]# 
3.4 用shell脚本批量创建用户
3.4.1 for的语法
for 变量 in {范围}
do
    条件
done

Eg:
for i in {1..4}
do
    echo $i
done
3.4.2 if的语法
if [ command ]
then
     语句
elif [ command ]
then
     语句
else
     语句
fi
3.4.3 创建100个用户

脚本:

#!/bin/bash
for i in {001..100}
do
        username=user$i
        if id -u ${username} >/dev/null 2>&1
        then
                echo useradd: user \'${username}\' already exists
        else
                useradd ${username}
                echo useradd: user \'${username}\' was successfully created
        fi
done

 效果:

[root@localhost ~]# . 3.sh   
useradd: user 'user01' already exists
useradd: user 'user02' already exists
useradd: user 'user03' already exists
useradd: user 'user04' already exists
......
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值