1、关于执行脚本:
在shell脚本中,#表示注释,编写好的shell脚本可以通过“./脚本名”的方式执行脚本,但是需要文件本身具有x权限,还可以通过内部命令“source”或者“.”来加载文件中的源代码执行,“source”可简写为“sh”。
2、关于重定向:
①:重定向输出:
:表示将命令的正常输出结果保存到指定的文件中,并覆盖文件中的原有内容,若文件不存在,则会新建一个文件;
:表示将命令的正常输出结果追加到指定的文件中;
②:重定向输入:
<:重定向输入指的是将命令接受输入的途径由默认的键盘该为指定的文件。例如:
将一个存有密码的文本通过重定向的方式,来给用户设置密码:passwd --stdin tom < pass.txt
③:错误重定向:
2>:指的是将执行命令过程中产生的错误信息保存到指定的文件,而不是直接显示在屏幕上。,也可以使用“2>>”来进行追加而不是覆盖源文件。【其中2表示为标准错误(STDERR),1表示标准输出(STDOUT),0表示为标准输入(STDIN)】
当命令输出的结果既包含标准输出又包含标准错误信息时,可以使用操作符“>”,“2>”分别将信息保存到同一个文件中。也可以使用“&>”操作符将两类输出信息保存到同一个文件。
3、关于shell变量:
①:自定义变量:
定义变量时:
定义变量的基本格式为“变量名=变量值”,等号两边没有空格。变量名以字母或下划线开头,名称中不能包含特殊字符,如:+、-、*、/、、、?、%、&、#等。
查看和引用变量的值:
在变量名前加“$”可以引用一个变量的值。使用echo命令可以查看变量,可以一次查看多个变量,如:echo $product $version
当变量名称容易和紧跟其后的其他字符相混时,需要用大括号“{ }”括起来,否则将无法确定正确的变量名称,如:echo ${product}2.5
变量赋值的特殊操作:
双引号(“ ”):主要起界定字符串的作用,特别是当要赋值的内容包含空格时,必须以双引号括起来,在双引号范围内,使用“$”符号可以引用其他变量的值,一般变量值都以双引号括起来。
单引号( ’ ’ ):当要赋值的内容中包含$、\ 等具有特殊含义的字符时,可以使用单引号括起来,但赋值的内容中若包含 ’ '单引号时,可以使用 “\”符号进行转义,以免冲突。
反撇号( ):主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。反撇号括起来的范围必须是能够执行的命令行,否则会报错。当需要使用反撇号进行嵌套命令替换操作时,容易混淆,可以改用“ $()”来代替反撇号,以解决嵌套问题,(从里到外先后执行替换)。
read命令:也可用来给变量赋值,如read 变量1,回车后将会等待用户输入文字,并将输入的内容赋值给变量1。也可加“-p”选项来输入一些提示信息:read -p “请指定备份存放目录” backup1
变量的作用范围:
默认定义的变量属于局部变量,只在当前的shell环境中有效,
可以通过export命令将指定的变量导出为全局变量。可以同时指定多个变量名作为参数,并且变量名称要以空格分开,而且无需使用“$”符号。
也可以直接通过 export 变量1=变量值 的方式定义一个全局变量。
数值变量的运算(expr):
+:加法运算;
-:减法运算;
*:乘法运算;
/:除法运算;
%:取余运算;
使用格式为:
x=2
y=5
expr $x + $y
也可以使用反撇号将运算结果赋值给其他变量:
变量名=expr $x + $y
②特殊的shell变量:
环境变量:
使用命令“env”可以查看到当前工作环境下的环境变量。环境变量的值由Linux系统自动维护,会随着用户状态的改变而改变。
其中PATH变量用于设置可执行程序的默认搜索路径,如将root目录添加到默认搜索路径:PATH="$PATH:/root"
环境变量的全局配置文件为:/etc/profile
用户独立配置未见位于:~/.bash_profile
修改变量文件后,须使用source命令重新读取加载或重启才会生效。
位置变量:
位置变量也称位置参数,在命令 “ls -lh /boot” 中,ls的位置变量为$0,-lh的位置变量为$1,/boot的位置变量为$2。以此类推。
预定义变量:
$#:表示命令行中位置参数的个数。
$*:表示所有位置参数的内容。
$?:表示前一条命令执行后返回的状态,返回0表示执行正确,返回任何非0的数值表示执行出现异常。
$0:表示当前执行的脚本或程序的名称。