【linux笔记】linux入门简介_shell基础(13)

Page content

这一篇整理了Shell概述相关的内容。

1.Shell 概述

Shell是一个命令行解释器。

1.1 查看Linux 提供的 Shell 解析器

$ cat /etc/shells

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

1.2 bash 和 sh 的关系

$ ll | grep bash
-rwxr-xr-x.   1 root root      964536 Apr  1  2020 bash
lrwxrwxrwx.   1 root root          10 Sep 14  2020 bashbug -> bashbug-64
-rwxr-xr-x.   1 root root        6964 Apr  1  2020 bashbug-64
lrwxrwxrwx.   1 root root           4 Sep 14  2020 sh -> bash

2.脚本编写

脚本以#!/bin/bash 开头(指定解析器)

$ touch helloworld.sh
$ vim helloworld.sh

#编写一下内容
#!/bin/bash
echo "helloworld"
#执行方式1 打开子bash 执行
$ sh ./helloworld.sh
$ bash ./helloworld.sh

#执行方式2 给helloworld.sh执行权限(x)
$ ./helloworld.sh

#执行方式3 使用内嵌命令 source 或 .
$ source helloworld.sh
$ . helloworld.sh

3.变量

#查看一个系统变量
echo $HOME
#查看所有系统变量
env

#查看Shell 中所有变量
set

#定义变量,注意,=号前后不能有空格
变量名=变量值

#撤销变量
unset 变量名

#声明静态变量:不能 unset
readonly 变量
  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
  • 等号两侧不能有空格
  • 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
  • 变量的值如果有空格,需要使用双引号或单引号括起来。

特殊变量

  • $n n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}

  • $# 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。

  • $*这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

  • $@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

  • $? 最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;
    如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。

4.运算符

“$((运算式))” 或 “$[运算式]”

S=$[(2+3)*4]

echo $S

欢迎大家的意见和交流

email: li_mingxie@163.com