文章目录

  • 命令的执行和快速编辑按钮
  • echo
  • 变量的有效范围
  • 变量读取、数组和声明
  • read
  • declare, typesset
  • 数组
  • ulimit限制
  • 变量内容微调P330


命令的执行和快速编辑按钮

【Ctrl】+【u】/【Ctrl】+【k】从光标处向前删除命令串/向后删除命令串
【Ctrl】+【a】/【Ctrl】+【e】让光标移动到整个命令串的最前面/最后面

echo

使用echo显示变量内容,在变量被使用时必须加上美元符号$

shell 脚本 echo 打印变量 shell echo输出变量_数组

  • 变量的设置规则
  1. 变量与变量内容以一个=连接,但是等号两边不能有空格
myname=yzq √
myname = yzq ×
  1. 变量内容若有空格可以用双引号或单引号将内容结合起来,注意:
  • 可以用转义字符【\】将特殊符号(\、$、空格等)变成一般字符
  • 需要借由其他额外的命令所提供的信息时,可以使用反单引号【`】和【$()】。
  • 需要该变量在其他子程序执行,则需要以export来使变量变成环境变量
  • 取消变量使用unset:【unset 变量名称】
  1. 变量名称只能是英文字母和数字,开头不能是数字
    如果name是yzq,现在想在yzq后加个yes该怎么做?这样对吗?
name=$nameyes

这是错的,如果nameyes是个变量,name的内容就是nameyes里的,就像这样:

shell 脚本 echo 打印变量 shell echo输出变量_子进程_02


正确的做法是

shell 脚本 echo 打印变量 shell echo输出变量_数组_03


双引号可以输出变量本来的内容,但是单引号输出一般字符【图片】

在一串命令中【``】中的内容会被先执行单引号和双引号最大的不同在于:

双引号内能输出变量的内容,单引号仅能输出一般字符

shell 脚本 echo 打印变量 shell echo输出变量_子进程_04


如果一个路径太长,可以把这个路径定义为一个变量,然后cd这个变量的内容即可

shell 脚本 echo 打印变量 shell echo输出变量_子进程_05

变量的有效范围

环境变量可以理解为全局变量,自定义变量可以理解为局部变量。环境变量可以被子进程引用,但是其他自定义变量内容不会存在于子进程中。

子进程:在当前的shell下启用另一个新的shell,新的shell就是子进程。一般情况下父进程的自定义变量无法在子进程中使用,但是用export将变量变成环境变量后就能在子进程使用了

shell 脚本 echo 打印变量 shell echo输出变量_shell 脚本 echo 打印变量_06

变量读取、数组和声明

read

用read来读取键盘输入的变量。

read [-pt] 变量名
-p 后面接提示字符
-t 后面接等待的【秒数】

shell 脚本 echo 打印变量 shell echo输出变量_子进程_07


这里加上-p能在输入的光标前输出一些提示字符;加上-t,比如上面的30,如果在30秒内没有任何操作就会自动跳过该命令。

declare, typesset

这两个都用来声明变量。

declare [-aixr] 变量名
-a 将后面的变量定义为数组
-i 将后面的变量定义为整数
-x 将后面的变量定义为环境变量(同export)
-r 将变量设置为readonly类型,该变量内容不能被更改且不能unset

shell 脚本 echo 打印变量 shell echo输出变量_子进程_08


因为变量类型默认为字符串,这里的sum就是这样。

改成这样就对了

shell 脚本 echo 打印变量 shell echo输出变量_单引号_09


并且bash环境中的数值计算默认最多只能达到整数,所以1/3这种的结果是0。

declare -p可以单独列出变量的类型

shell 脚本 echo 打印变量 shell echo输出变量_单引号_10


将-变成+可以进行取消操作,让sum不具有i属性,最后变成了默认的字符串。

数组

shell 脚本 echo 打印变量 shell echo输出变量_数组_11


注意数组输出,要有{}

ulimit限制

Linux支持多用户,一个时刻可以有多个用户同时登陆一台Linux。但是如果每个人都开启很多文件,操作系统会难以承受。所以可以用bash限制用户的系统资源,包括开启的文件数量、可以使用的CPU时间、可以使用的内存总量等。

ulimit [-SHacdfltu] 配额
-H hard limit,严格设置,一定不能超过这个数值
-S soft limit,警告设置,可以超过,但是超过会有警告
-a 后面不接任何参数,用于列出所有的限制额度
-c 当某些程序出现错误,系统可能将该程序在内存中的信息写成文件(用于除错)
   这种文件被称为core file(内核文件),此为限制内核文件的最大容量
-f 此shell可以建立的最大文件容量,单位是KB
-d 程序可使用的最大段内存容量
-l 可用于锁定的内存量
-t 可使用的最大CPU时间,单位为秒
-u 单一使用者可使用的最大进程数量

shell 脚本 echo 打印变量 shell echo输出变量_shell 脚本 echo 打印变量_12

变量内容微调P330