SHELL基础知识
shell的定义
在计算机科学中,Shell就是一个命令解释器。
shell是位于操作系统和应用程序之间,是他们二者最主要的接口,shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。
shell的分类基本上shell分两大类:
图形界面shell和命令行shell
(图形界面shell:图形界面shell就是我们常说的桌面
命令行shell:windows系统: com.exe命令提示符
Linux: sh/ ksh/bash/…
SHELL的使用方式:
1、手工方式:逐行输入命令,逐行确认命令
2、脚本方式:脚本方式就是把输入的内容放到一个文件里,然后一起执行
例子:shell脚本示例现在我们来使用脚本的方式来执行以下
#!/bin/bash
#这个是临时脚本
echo ‘hello’
echo ‘world’
脚本执行效果
/bin/bash hello.sh
脚本创建工具:vi/vim
脚本命名:要知道命名的意义,知道这个脚本是干什么用的
脚本里的注释:
单行注释:#内容…
多行注释(两种):<<!..!和:<<字符…字符
脚本的开发规范
1、脚本名要有意义,后缀名是.sh
2、脚本文件首行必须是脚本解释器(#/bin/bash)
3、脚本常见的执行方式:bash脚本名
4、脚本的执行规范:从上到下,依次执行
5、[]中括号两端要有空格,不然执行会报错
变量
shell中变量的三大类:
全局变量、局部变量、shell内置变量
本地变量算什么?
本地变量就是在当前的某个环境下才能生效的变量,作用范围小
本地变量分为两种:普通变量和命令变量
普通变量有三种:
1、变量名=变量值 重点:变量值必须是一个整体,中间没有特殊字符
举例:
ysh=hello
echo ysh
输出值为ysh 有值
2、变量名=‘变量值’ 重点:我看到的什么就输出什么
举例:
ysh2=‘hello’
echo
y
s
h
2
输
出
值
为
h
e
l
l
o
3
、
变
量
名
=
“
变
量
值
”
重
点
:
如
果
变
量
值
范
围
内
,
有
可
以
解
析
的
变
量
A
,
那
么
首
先
解
析
变
量
A
,
将
A
的
结
果
和
其
他
内
容
组
合
成
一
个
整
体
,
重
新
赋
值
给
变
量
B
举
例
:
y
s
h
1
=
‘
h
e
l
l
o
w
o
r
l
d
’
y
s
h
2
=
‘
c
o
n
−
ysh2 输出值为hello 3、变量名=“变量值” 重点:如果变量值范围内,有可以解析的变量A,那么首先解析变量A,将A的结果和其他内容组合成一个整体,重新赋值给变量B 举例: ysh1 = ‘helloworld’ ysh2 = ‘con-
ysh2输出值为hello3、变量名=“变量值”重点:如果变量值范围内,有可以解析的变量A,那么首先解析变量A,将A的结果和其他内容组合成一个整体,重新赋值给变量B举例:ysh1=‘helloworld’ysh2=‘con−ysh1’
单引号输出结果为con-
y
s
h
1
y
s
h
2
=
“
c
o
n
−
ysh1 ysh2 = “con-
ysh1ysh2=“con−ysh1”
双引号输出结果为con-helloworld
变量命令=
(
命
令
)
d
i
r
2
=
(命令) dir2=
(命令)dir2=(pwd)
echo $dir2
输出内容为/home/ysh
全局变量
全局变量是什么?
全局变量就是在当前系统所有的环境中都能生效的变量
env 查看所有的全局变量
定义全局变量:
1、方式1
变量=值 export 变量
举例:
ysh=hello666
export ysh
env | grep ysh
输出值为 ysh =hello666
2、方式2(最常用)
export ysh=$(pwd)
env | grep pwd
输出结果为 pwd=/home/ysh
变量名的标准使用方式
echo
y
s
h
e
c
h
o
"
ysh echo "
yshecho"ysh "
echo
y
s
h
e
c
h
o
"
{ysh} echo "
yshecho"{ysh}"
输出结果都为一样
取消变量名
unset ysh
env | grep ysh
SHELL内置变量
符号和意义
$0 获取当前执行的shell的脚本文件名
$n 获取当前执行的shell脚本的第n个参数值
$# 获取当前shell命令行中参数的总个数
$? 获取执行上一个指令的返回值(0为成功,非0为失败)
字符串的精确截取
${变量名:起始位置:截取长度}
符号和意义
${file:0:5}从第1个字符开始,截取5个字符
${file::5}从第1个字符开始,截取5个字符
${file:5:5}从第6个字符开始,截取5个字符
${file:5}从第6个字符开始,截取后面所有的字符
f
i
l
e
:
0
−
5
从
倒
数
第
5
个
字
符
开
始
,
截
取
后
面
所
有
的
字
符
{file:0-5}从倒数第5个字符开始,截取后面所有的字符
file:0−5从倒数第5个字符开始,截取后面所有的字符{file:0-6:3}从倒数第6个字符开始,截取之后的3个字符
默认值
场景一:
场景二:
表达式
计算表达式
1、$(())中只能用±*/和()运算符,并只能做整数运算
举例:
echo $((100/2))
输出结果为50
2、let
表达式必须为一个整体,中间不能出现空格等特殊字符
举例:
i=1
let i=i+7
echo $i
输出结果为8