shell编程 -- 基础

shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

linux笔记

链接:https://pan.baidu.com/s/16GZCPfUTRzUqIyGnYwPuUg?pwd=s5xt
提取码:s5xt

脚本执行

  • 采用bash或者sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
  • 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x
  • 在脚本的路径前加上 ”."或source

前两种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

第三种,也就是使用在脚本路径前加“.”或source的方式,可以使脚本内容在当前shell里执行,而无需打开子shell。

开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的。

系统预定义变量:$HOME $PWD $SHELL $USER

注释

# echo "这是注释"

echo "这不是注释"

:<

变量

定义变量不能有空格

name=golitter
# 等价于
name="golitter" # 双引号可以转义
name='golitter' # 单引号不能转义

单引号与双引号的区别:

  • 单引号中的内容会原样输出,不会执行、不会取变量;
  • 双引号中的内容可以执行、可以取变量;

使用变量

echo $name # 输出 golitter
等价于
echo ${name} # 带花括号可以帮助识别变量边界

删除变量

unset name

声明静态变量:readonly变量,注意:不能unset。

变量定义规则

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

read读取控制台输入

基本语法 read [-p -t] parameter

  • -p:指定读取值时的提示符
  • -t:指定读取值时等待的时间(秒) 如果不加 -t 表示一直等待
  • parameter:指定读取值得变量

字符串

str="string"
echo ${#str}
echo ${str:0:3} # 输出:str

文件参数变量

在执行shell脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。特殊的, 0 是文件名(包含路径)。注意:超过 10 后要用花括号括起来 ‘ 0是文件名(包含路径)。注意:超过10后要用花括号括起来` 0是文件名(包含路径)。注意:超过10后要用花括号括起来{11}`。

shell编程 -- 基础_第1张图片

  • $#:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
  • $*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
  • $@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
  • $?:最后一次执行的命令的1返回状态。如果为0,表示上一个命令正确执行,否则非正常执行。
比较$*$@区别

$*$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 2.. 2 .. 2..n的形式输出所有参数。

当它们被双引号“”包含时,$*会将所有参数作为一个整体,以”$1 $2 … n “形式输出; ‘ n“形式输出;` n形式输出;@`会将各个参数分开,以"$1" " 2 " . . . " 2" ... " 2"..."n"的形式输出所有参数。

运算符

$((运算式))
$[运算式]

条件判断

  • test condition
  • [ condition ] (* condition 前后要有空格)

常用判断条件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWgiIrup-1683084147468)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230502220142536.png)]

你可能感兴趣的:(bash,linux,开发语言)