shell编程之变量:
自定义变量
环境变量
参数变量
...
自定义变量:
格式:变量名=变量值
如果变量值中有空格,需要用双引号将其引起来;
其“=”左右都不能有空格
变量调用:
格式:$变量名
在shell中每个变量的值都是属于字符串
创建环境变量:
格式:export 变量名=变量值
Bash中的内置命令:
set:表示查看所有的系统变量
env:表示只查看所有的环境变量
help:查看内置命令的列表
help 命令名:查看某个命令的作用
help -d 命令名:显示命令的简要功能介绍
help -s 命令名:显示命令的简要的语法格式
help -m 命令名:显示命令的手册页
Linux系统中的外部命令:
which 命令名:可以查看该命令的路径
有些命令既是外部命令也是内部命令,例如:echo,内部命令要高于外部命令
命令名 --help:查看某个外部命令的用法。注:如果该命令即是内部命令又是外部命令,我们要查看其外部命令的用法:格式:该命令路径 --help 例如:/bin/echo --help
wc 文件名:查看文件内容的行数、单词数、字节数
wc -w 文件名:查看文件内容的单词数
添加某个目录到PATH下方式:例如:PATH="$PATH:/tmp/bin"
3.2.3设置和取消别名命令alias和unalias
是什么?为什么需要用它?怎么用它?
alias:就是设置别名命令
例如我们经常要进入到某个目录下。但该目录的路径有点长,不方便,那我们就可以将该目录完整路径设置成别名,下次进入该目录或文件中,直接输别名即可
设置别名命令格式:alias 别名='cd 该目录或文件的完整路径'
执行:别名
eg:$ alias myaa='cd /tmp/aa/bb/cc/dd'
$ myaa
***查看Linux系统中默认的别名:
$ alias -p
unalias:取消别名命令
取消别名命令格式:$ unalias 别名
3.5编写并运行第一个脚本
在shell脚本(Bash)中:
进入Bash脚本:vim 文件名(一般以.sh为后缀);执行bash脚本:bash(或source) 文件名
1.#!/bin/bash 表示为此脚本的解释程序
2.# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释
3.如果变量值是有空格的额,就必须要用双引号引起来,才能原样输出
4.变量名=变量值,即给变量名赋值时,“=”左右两边不能空格;
5.在shell脚本中,所有的变量值都是输出字符串形式;例如:a1=123;b1=456;c1=$a1+$b1;执行结果:123+456;
6.变量的命名规则:只能由字母、下划线和数字组成,其中数字不能开头
7.变量的调用(即想要获取某个变量的值):$变量名
8.输出某个变量值:用echo命令;
**注意:
eg:echo I like bash 输出结果:I like bash
echo "I like bash" I like bash
echo 'I like bash' I like bash
echo "\"I like bash\"" "I like bash"
aa=I like bash
echo $aa -->会报错,因为带有空格的变量值必须用引号引起来
aa="I like bash"
echo $aa --> I like bash
bb='I like bash'
echo $bb --> I like bash
9.在Bash中,单引号和双引号的区别:
单引号不识别$符号,只把它当做正常的$符号;
双引号会识别$符号,会把它当做调用某个变量的值;
不加任何引号的$符号,也是会把它当做调用某个变量的值
eg:aa=123
cc='$a';echo $cc 结果:$a
dd="$a";echo $dd 123
ee=$a;echo $ee 123
**3.6.1命令的解释顺序
Bash的命令解释顺序: alias→keyword→function→built-in→$PATH 即,一旦出现重名的命令,那么优先级由高到低,依次是:别名→关键字→函数→内置命
令→外部命令。
**3.6.2改变命令解释顺序的三条内置命令 Bash提供的三条内置命令可以改变命令的处理顺序。 1)command <命令>,忽略别名和函数,按照内置命令和外部
命令来处理。 2)builtin <命令>,只查找内置命令,忽略函数和外部命令。 3)enable,禁用或使能内置命令。
eg:alias pwd="This is a alias pwd"
pwd 结果:This is a alias pwd
command pwd /home/shiyanlou
**3.6.3命令类型的查询
查询某个命令是别名(alias)、关键字(keyword)、函数(function)、内置命令(builtin)和外部命令(file):
格式:type -t 命令名
为什么在终端上执行此命令,是没有呢??????
3.7命令的退出状态以及命令true和false
在一个命令或程序结束之后,都会返回一个退出状态。状态值范围为0到255,0表示成功执行,非零均表示失败,其中127表示未找到命令,内置变量$?存储着上一条命令
的退出状态
eg:$ date
$ echo $? 结果:0 表示date命令运行成功
eg:$ dateee
$ echo $? 结果:127 表示dateee命令不存在,找不到该命令
Bash有两个特殊的内置命令:true和false。命令true的返回结果永远是成功,命令false的返回结果永远是失败。
自定义变量
环境变量
参数变量
...
自定义变量:
格式:变量名=变量值
如果变量值中有空格,需要用双引号将其引起来;
其“=”左右都不能有空格
变量调用:
格式:$变量名
在shell中每个变量的值都是属于字符串
创建环境变量:
格式:export 变量名=变量值
Bash中的内置命令:
set:表示查看所有的系统变量
env:表示只查看所有的环境变量
help:查看内置命令的列表
help 命令名:查看某个命令的作用
help -d 命令名:显示命令的简要功能介绍
help -s 命令名:显示命令的简要的语法格式
help -m 命令名:显示命令的手册页
Linux系统中的外部命令:
which 命令名:可以查看该命令的路径
有些命令既是外部命令也是内部命令,例如:echo,内部命令要高于外部命令
命令名 --help:查看某个外部命令的用法。注:如果该命令即是内部命令又是外部命令,我们要查看其外部命令的用法:格式:该命令路径 --help 例如:/bin/echo --help
wc 文件名:查看文件内容的行数、单词数、字节数
wc -w 文件名:查看文件内容的单词数
添加某个目录到PATH下方式:例如:PATH="$PATH:/tmp/bin"
3.2.3设置和取消别名命令alias和unalias
是什么?为什么需要用它?怎么用它?
alias:就是设置别名命令
例如我们经常要进入到某个目录下。但该目录的路径有点长,不方便,那我们就可以将该目录完整路径设置成别名,下次进入该目录或文件中,直接输别名即可
设置别名命令格式:alias 别名='cd 该目录或文件的完整路径'
执行:别名
eg:$ alias myaa='cd /tmp/aa/bb/cc/dd'
$ myaa
***查看Linux系统中默认的别名:
$ alias -p
unalias:取消别名命令
取消别名命令格式:$ unalias 别名
3.5编写并运行第一个脚本
在shell脚本(Bash)中:
进入Bash脚本:vim 文件名(一般以.sh为后缀);执行bash脚本:bash(或source) 文件名
1.#!/bin/bash 表示为此脚本的解释程序
2.# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释
3.如果变量值是有空格的额,就必须要用双引号引起来,才能原样输出
4.变量名=变量值,即给变量名赋值时,“=”左右两边不能空格;
5.在shell脚本中,所有的变量值都是输出字符串形式;例如:a1=123;b1=456;c1=$a1+$b1;执行结果:123+456;
6.变量的命名规则:只能由字母、下划线和数字组成,其中数字不能开头
7.变量的调用(即想要获取某个变量的值):$变量名
8.输出某个变量值:用echo命令;
**注意:
eg:echo I like bash 输出结果:I like bash
echo "I like bash" I like bash
echo 'I like bash' I like bash
echo "\"I like bash\"" "I like bash"
aa=I like bash
echo $aa -->会报错,因为带有空格的变量值必须用引号引起来
aa="I like bash"
echo $aa --> I like bash
bb='I like bash'
echo $bb --> I like bash
9.在Bash中,单引号和双引号的区别:
单引号不识别$符号,只把它当做正常的$符号;
双引号会识别$符号,会把它当做调用某个变量的值;
不加任何引号的$符号,也是会把它当做调用某个变量的值
eg:aa=123
cc='$a';echo $cc 结果:$a
dd="$a";echo $dd 123
ee=$a;echo $ee 123
注意:
在Bash中如果有转义字符的,一定要加-e参数,不然有的转义字符不能被识别 eg:echo -e "hello\tworld" 结果:hello world(如果没有加-e,结果:hello\tworld)
在Linux终端界面中可以不用加-e参数,其转义字符可以自动别识别的。
3.6命令解释顺序与命令类型的查询 ??????**3.6.1命令的解释顺序
Bash的命令解释顺序: alias→keyword→function→built-in→$PATH 即,一旦出现重名的命令,那么优先级由高到低,依次是:别名→关键字→函数→内置命
令→外部命令。
**3.6.2改变命令解释顺序的三条内置命令 Bash提供的三条内置命令可以改变命令的处理顺序。 1)command <命令>,忽略别名和函数,按照内置命令和外部
命令来处理。 2)builtin <命令>,只查找内置命令,忽略函数和外部命令。 3)enable,禁用或使能内置命令。
eg:alias pwd="This is a alias pwd"
pwd 结果:This is a alias pwd
command pwd /home/shiyanlou
**3.6.3命令类型的查询
查询某个命令是别名(alias)、关键字(keyword)、函数(function)、内置命令(builtin)和外部命令(file):
格式:type -t 命令名
为什么在终端上执行此命令,是没有呢??????
3.7命令的退出状态以及命令true和false
在一个命令或程序结束之后,都会返回一个退出状态。状态值范围为0到255,0表示成功执行,非零均表示失败,其中127表示未找到命令,内置变量$?存储着上一条命令
的退出状态
eg:$ date
$ echo $? 结果:0 表示date命令运行成功
eg:$ dateee
$ echo $? 结果:127 表示dateee命令不存在,找不到该命令
Bash有两个特殊的内置命令:true和false。命令true的返回结果永远是成功,命令false的返回结果永远是失败。