简单的shell语法和脚本编写
简单的shell语法和脚本编写
浅学一下
认识shell
说明:
shell是介于用户和内核之间的一个工具,用户的操作通过shell进行解析,然后传递给内核
shell有两种表现形式:交互式(单步执行),脚本式(文本执行)
我们通常所说的shell编程是脚本式
1.类型:
bash(linux默认),ash,csh,ksh等
环境变量$SHELL 标明了系统使用的shell
/etc/shells 定义了系统可用的shell
2.演示:
hello.sh
1 | ! /bin/bash |
添加可执行权限 chmod +x hello.sh
启动方法
- 在当前目录:
./hello.sh - 使用bash执行:
bash hello.sh# 无需添加可执行权限
3.书写shell
指定shell解释器 #! /bin/bash
注释符号:#
非常严格的使用习惯
a=123 # 不带空格
变量
使用形式
1 | ! /bin/bash |
变量类型
本地变量:只在shell脚本内部使用
环境变量:在整个系统中都可使用,通常全部大写,使用最多的是 PATH
修改
系统:
/etc/profile 用户:
~/.bash_profile导出
export PATH=$PATH:/root/shell立即生效
source 关键字
例如:
source /etc/profile
用冒号隔开每个目录
位置变量
1 | ! /bin/bash |
1 | 位置变量 |
文件包含
形式1
include1.sh
1 | ! /bin/bash |
include2.sh
1 | ! /bin/bash |
上方的include2.sh通过 .加上文件名指定同级目录下的include1.sh,并且打印了include1的变量
形式2
include2.sh
1 | ! /bin/bash |
文件包含总结
. 文件source 文件
说明:以上两种形式都可以在一个脚本中引用另一个脚本,相当于直接书写在当前文件中
seq,expr
特殊命令
seq m n产生从m到n的整数expr将表达式进行运算 expr 2+3 # 结果为5
expr 2 \ * 3 # 结果为6,\表示转义,直接在符号前面,但是在markdown里面直接加在符号前就不显示了,所有这里我打了一个空格,使用的时候不要加
字符串
符号
双引号:可以使用除 $ ` \ “ 之外的任意字符
单引号:把所有内容原文输出,任何字符都当成普通字符,除了单引号,因为遇到单引号就代表结束了,不解析变量
反引号:表示将其中的字符串当作命令执行
1 | 比如 |
反斜线:转义特殊字符,如:$ ` \ 等
字符串操作
长度计算:`$



