第四章 第一节 shell脚本的变量 2018.3.20
2018-03-20 20:45
169 查看
Shell的作用:命令解释器,人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上
流程: 用户请求-->shell-->Linux内核-->硬件
一、shell基础
1、历史命令:history
history [-raw] histfiles
n(重要):数字,列出最近的n笔目录(包括刚输入的history n)
-a (重要):将目前的shell中的所有history命令新增入histfiles(文件)中,
若没有加histfiles,则默认写入~/.bash_history(~家目录)
-c:将目前的shell中的所有history内容全部消除
-r :将histfile的内容读到目前这个shell的history记忆中
-w:将目前的history记忆内容写入histfiles中
在默认的情况下,会将历史纪录写入~/.bash_history当中!
注:历史命令默认保存1000条,可以在环境配置文件 /etc/profile 中修改
历史命令的调用:
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
2、命令与文件补全
只要在输入命令或文件时,按“Tab”键就会自动进行补全
3、命令别名:alias
例 alias grep='grep --color=auto'(等号两边不能有空格)
注:(1)alias 仅在当前shell 生效。如果重新开启一个shell,或者重新登录,
则这些alias将无法使用
(2)alias永久化的方法
<1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。
然后# source ~/.bashrc
<2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,
然后# source /etc/bashrc
4、删除别名:unalias
5、多命令顺序执行
; 命令1;命令2
&& 命令1 && 命令2 当命令1正确执行,则命令2 才 会执行;
当命令1执行不正确,则命令2 不 会执行
|| 命令1 || 命令2 当命令1执行不正确,则命令2 才 会 执行;
当命令1正确执行,则命令2 不 会执行
例: 某文件在当前文件下存在,打印good;在当前目录下不存在,打印 not good
1s fi1e1.txt &> /dev/nu11 && echo"good”|| echo"not good"
ls file2221.txt &> /dev/null && echo"good" || echo"not good"
6、管道符:
命令1 | 命令2 命令1的正确输出作为命令2的操作对象
7、cut 选取命令
(1)cut -d'分隔字符' -f fields <==用于有特定分隔字符
-d :后面接分隔字符。与-f 一起使用;
-f :依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思;
(2)cut -c 字符区间<==用于排列整齐的信息
-c :以字符(characters) 的单位取出固定字符区间;
8、tee 将某个程序的中间过程记录下来
tee [-a] file
-a :以累加(append) 的方式,将数据加入file 当中!
9、echo 输出命令
-e :支持反斜线 \ 控制的字符换行
-n :-n不要在最后自动换行
-help:显示帮助
-version:显示版本信息
二、Shell 脚本(.sh)
1、脚本的基本元素
(1)#!/bin/bash ----->必须在第一行
(2)# ---->注释
#des:脚本描述
#date:脚本日期
#autor:作者
#email
(3)变量
(4)控制
2、运行脚本
. /脚本名 当前目录下运行脚本
三、Shell 变量
1、命名格式
(1)由字母、数字、下划线组成,不能以数字开头
(2) 在Bath 中,变量默认类型是 字符串型。
若要进行数值运算,则必须指定变量类型为数值型
2、变量分类
本地变量:用户变量,仅在创建它的 shell 中使用,可以任意使用和修改
环境变量:定义在 /etc/profile
内部变量:由系统提供的。与环境变量不同,但用户不能修改它们。
3、本地变量
(1) 在用户现在的shell生命期的脚本中使用
(2) 赋值格式:变量 =值(等号两边不能有空格)
(3) 变量的引用
$变量名
注: 1)等号两边不可以有空格
2)取值包含空格,必须用双引号括起来
3)Shell变量可以用大小写字母,区分大小写
(4)清除变量 unset 变量名(变量名前没有$)
显示本地所有变量 set
4、环境变量
(1)环境变量用于所有用户进程(通常称为子进程)。
登陆进程称为父进程,通过pstree可以查看
(2)环境变量可以用于所有子程序,着包括编辑器、脚本和应用
(3)环境变量可以在命令行中设置,但用户注销时这些值将丢失
(4)环境变量均为大写
(5)必须用export命令导出
(6)命令
设置环境变量 variable-name=value
export variable-name(环境变量名大写)
显示环境变量 env可以看到所有的环境变量
echo $环境变量名(显示一个变量)
清除环境变量 unset 环境变量名
(7)让环境变量的修改在退出shell再次登录时仍有效,需要在相关配置文件中修改
Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、
~/.profile、~/.bashrc、/etc/bashrc
5、内部变量
$# ——传送给shell程序的位置参数的数量(几个)
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。
0表示没有错误,其他任何值表明有错误。
$0——shell程序的名称
$*——调用shell程序时所传送的全部参数的单字符串,“参数1““参数2”…形式保存的参数
$@——“参数1 参数2”…形式保存的参数
$n——第n个参数
$$——本程序的PID
四、Shell 中的特殊符号
1、注释符#
除了#!/bin/bash里的#特殊
2、美元符$
变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。
变量字符长度超过1个时,用{}括起来
3、单引号
被引起的字符全部 原样打印
4、双引号
引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。
5、倒引号(数字1键旁边的那个键)
引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
6. 反斜线
反斜线是转义字符,它能把特殊字符变成普通字符。
在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
注:在单引号括起来的字符串中
9978
,反斜线也成为普通字符,而失去转义字符功能。
7.获取字符串长度
string="abcd"
echo ${#string} #输出4
8.提取子字符串
以下实例从字符串第2 个字符开始截取4 个字符
string="runoobis a great site"
echo ${string:1:4} # 输出unoo
流程: 用户请求-->shell-->Linux内核-->硬件
一、shell基础
1、历史命令:history
history [-raw] histfiles
n(重要):数字,列出最近的n笔目录(包括刚输入的history n)
-a (重要):将目前的shell中的所有history命令新增入histfiles(文件)中,
若没有加histfiles,则默认写入~/.bash_history(~家目录)
-c:将目前的shell中的所有history内容全部消除
-r :将histfile的内容读到目前这个shell的history记忆中
-w:将目前的history记忆内容写入histfiles中
在默认的情况下,会将历史纪录写入~/.bash_history当中!
注:历史命令默认保存1000条,可以在环境配置文件 /etc/profile 中修改
历史命令的调用:
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
2、命令与文件补全
只要在输入命令或文件时,按“Tab”键就会自动进行补全
3、命令别名:alias
例 alias grep='grep --color=auto'(等号两边不能有空格)
注:(1)alias 仅在当前shell 生效。如果重新开启一个shell,或者重新登录,
则这些alias将无法使用
(2)alias永久化的方法
<1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。
然后# source ~/.bashrc
<2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,
然后# source /etc/bashrc
4、删除别名:unalias
5、多命令顺序执行
; 命令1;命令2
&& 命令1 && 命令2 当命令1正确执行,则命令2 才 会执行;
当命令1执行不正确,则命令2 不 会执行
|| 命令1 || 命令2 当命令1执行不正确,则命令2 才 会 执行;
当命令1正确执行,则命令2 不 会执行
例: 某文件在当前文件下存在,打印good;在当前目录下不存在,打印 not good
1s fi1e1.txt &> /dev/nu11 && echo"good”|| echo"not good"
ls file2221.txt &> /dev/null && echo"good" || echo"not good"
6、管道符:
命令1 | 命令2 命令1的正确输出作为命令2的操作对象
7、cut 选取命令
(1)cut -d'分隔字符' -f fields <==用于有特定分隔字符
-d :后面接分隔字符。与-f 一起使用;
-f :依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思;
(2)cut -c 字符区间<==用于排列整齐的信息
-c :以字符(characters) 的单位取出固定字符区间;
8、tee 将某个程序的中间过程记录下来
tee [-a] file
-a :以累加(append) 的方式,将数据加入file 当中!
9、echo 输出命令
-e :支持反斜线 \ 控制的字符换行
-n :-n不要在最后自动换行
-help:显示帮助
-version:显示版本信息
二、Shell 脚本(.sh)
1、脚本的基本元素
(1)#!/bin/bash ----->必须在第一行
(2)# ---->注释
#des:脚本描述
#date:脚本日期
#autor:作者
(3)变量
(4)控制
2、运行脚本
. /脚本名 当前目录下运行脚本
三、Shell 变量
1、命名格式
(1)由字母、数字、下划线组成,不能以数字开头
(2) 在Bath 中,变量默认类型是 字符串型。
若要进行数值运算,则必须指定变量类型为数值型
2、变量分类
本地变量:用户变量,仅在创建它的 shell 中使用,可以任意使用和修改
环境变量:定义在 /etc/profile
内部变量:由系统提供的。与环境变量不同,但用户不能修改它们。
3、本地变量
(1) 在用户现在的shell生命期的脚本中使用
(2) 赋值格式:变量 =值(等号两边不能有空格)
(3) 变量的引用
$变量名
注: 1)等号两边不可以有空格
2)取值包含空格,必须用双引号括起来
3)Shell变量可以用大小写字母,区分大小写
(4)清除变量 unset 变量名(变量名前没有$)
显示本地所有变量 set
4、环境变量
(1)环境变量用于所有用户进程(通常称为子进程)。
登陆进程称为父进程,通过pstree可以查看
(2)环境变量可以用于所有子程序,着包括编辑器、脚本和应用
(3)环境变量可以在命令行中设置,但用户注销时这些值将丢失
(4)环境变量均为大写
(5)必须用export命令导出
(6)命令
设置环境变量 variable-name=value
export variable-name(环境变量名大写)
显示环境变量 env可以看到所有的环境变量
echo $环境变量名(显示一个变量)
清除环境变量 unset 环境变量名
(7)让环境变量的修改在退出shell再次登录时仍有效,需要在相关配置文件中修改
Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、
~/.profile、~/.bashrc、/etc/bashrc
5、内部变量
$# ——传送给shell程序的位置参数的数量(几个)
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。
0表示没有错误,其他任何值表明有错误。
$0——shell程序的名称
$*——调用shell程序时所传送的全部参数的单字符串,“参数1““参数2”…形式保存的参数
$@——“参数1 参数2”…形式保存的参数
$n——第n个参数
$$——本程序的PID
四、Shell 中的特殊符号
1、注释符#
除了#!/bin/bash里的#特殊
2、美元符$
变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。
变量字符长度超过1个时,用{}括起来
3、单引号
被引起的字符全部 原样打印
4、双引号
引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。
5、倒引号(数字1键旁边的那个键)
引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
6. 反斜线
反斜线是转义字符,它能把特殊字符变成普通字符。
在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
注:在单引号括起来的字符串中
9978
,反斜线也成为普通字符,而失去转义字符功能。
7.获取字符串长度
string="abcd"
echo ${#string} #输出4
8.提取子字符串
以下实例从字符串第2 个字符开始截取4 个字符
string="runoobis a great site"
echo ${string:1:4} # 输出unoo
相关文章推荐
- shell 脚本中将输出内容赋值给一个变量时的换行问题
- Shell脚本学习笔记(二)--变量
- shell脚本中变量的递归使用--真实内存使用查看脚本
- [Linux] shell bash 脚本特殊变量 [大三TJB_708]
- 变量在shell脚本间的传递
- shell脚本学习第四天——bash内部变量,变量主串,变量替换
- Shell脚本定义变量和环境变量的引用
- shell脚本之变量与状态码
- shell脚本传递参数的七个特定的变量
- 通过shell脚本删除代码里面定义但未使用的变量
- Linux之shell脚本学习(1)简介和变量
- shell脚本介绍,shell脚本结构和执行方式,date命令的用法,shell脚本中的变量简介
- Shell 变量、脚本参数
- Shell脚本(1)变量应用
- shell脚本——变量的设置及使用
- BASH命令和SHELL脚本总结(16)父脚本中export的变量在子脚本中的可见性测试
- Shell脚本中的变量名命名约束
- shell脚本导入用户的环境变量
- Shell中脚本变量和函数变量的作用域
- shell脚本基础知识和位置变量