一、给文件添加权限
chmod + r + 文件名 给该文件增加可读的权限chmod + w + 文件名 给该文件增加可写的权限chmod + x + 文件名 给该文件增加可执行的权限
./文件名 执行该文件
二、Shell变量
*shell的变量按照变量的作用可以分为4类:
1.环境变量:主要保存与环境相关的参数
2.用户自定义变量:用在脚本内表达运行过程中数据
3.位置参数变量:用来向脚本中传递参数,变量名不能自定
义
4.预定义变量:是bash中已定义的变量,按照变量的作用范围可以分为2类:
1.全局变量:是环境变量,其值不随shell脚本的执行结束而消失
2.局部变量:shell程序内部定义的,其使用范围仅限于定义 它的程序,包括用户自定义变量、位置变量和预定义变量。
一、自定义变量
定义变量 变量名 = 变量值 如:num = 10
引用变量 $变量名 如:i = $num 把变量num的值付给变量i
显示变量 使用echo命令可以显示单个变量取值 如:echo $num清除变量 使用unset命令清除变量 如:unset num
二、读取变量
read string 从键盘输入一个字符串赋值给变量string,若string没定义,则先定义再使用。
readonly string = 100 定义一个只读变量,只能在定义时初始化赋值,
以后其值不能改变,不能被清除。export STRING = 300 使用export说明的变量,会被导出为环境变量。其他shell均可使用。
三、注意事项
1.变量名只能是英语字母、下划线、数字。开头不能是数字
1_num = 10 错误
num_1 = 10 正确2.等号两边不能直接接空格符,若变量中本身就包含了空格,
则整个字符串都要用双引号、或单引号括起来;双引号内的特殊字符(即 $变量)
可以保留变量的特性,但是单引号内的特殊字符则仅为一般的字符,没有特殊意义。
name=aa bb //错误name="aa bb" //正确echo "$nameis me" //输出:aa bb is meecho "$nameis me" //输出:$name is me
四、环境变量
》shell在开始执行时就已经定义了一些和系统的工作环境有
关的变量,我们在shell中可以直接使用$name引用
》定义:
一般在~/.bashrc或/etc/profile文件中(系统自动调用的脚
本)使用export设置,允许用户后来更改
VARNAME = value ;export VARNAME
》传统上,所有环境变量均为大写
》显示环境变量
使用env 命令可以查看所有的环境变量。
》清除环境变量
使用unset 命令清除环境变量
常见的环境变量:
HOME 用于保存注册目录的完全路径名
PATH 用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这目录,
找到的第一个与命令名称一致的可执行文件将被执行
PATH=$HOME/bin:/bin:/usr/bin;export PATH
HOSTNAME 主机名
SHELL 默认的shell命令解析器
LOGNAME 此变量保存登录名
PWD 当前工作目录的绝对路径名
······
五、预定义变量
预定义变量:
$# 传给shell脚本参数的数量
$* 传给shell脚本参数的内容
$1、$2、$3、...、$9 运行脚本时传递给其的参数,用空格隔开
$? 命令执行后返回的状态,"$?"用于检查上一个命令是否正确
(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)
$0 当前执行的进程名
$$ 当前进程的进程号,"$$"变量最常见的用途是用作临时文件的名字以保证临时文件不会重复
""(双引号):包含的变量会被解释
''(单引号):包含的变量会当做字符串解释
``(数字键1左面的反引号):反引号中的内容作为系统命令
,并执行其内容,可以替换输出为一个变量
\ 转义字符:
同c语言 \n \t \r \a等 echo命令需加-e转义
(命令序列):
由子shell来完成,不影响当前shell中的变量
{ 命令序列 }:---注意:“{”、“}”前后有一空格
在当前shell中执行,会影响当前变量
三、条件测试语句
1.test命令:用于测试字符串、文件状态和数字
2.test命令有两种格式:
test condition 或[ condition ]
使用方括号时,要注意在条件两边加上空格
测试文件状态的条件表达式
-e 是否存在-d 是目录-f 是文件-r 可读-w 可写-x 可执行-L 符号连接-c 是否字符设备-b 是否块设备-s 文件非空
[ str_operator “str” ]
[ “str1” str_operator “str2”]
》其中str_operator可以是:
= 两个字符串相等
!= 两个字符串不相等
-z 空串
-n 非空串
test num1 num_operator num2
[ num1 num_operator num2 ]
》*num_operator可以是:
-eq 数值相等
-ne 数值不相等
-gt 数1大于数2
-ge 数1大于等于数2
-le 数1小于等于数2
-lt 数1小于数2
命令执行控制:
&&:
command1 && command2
&&左边命令(command1)执行成功(即返回0)shell才执行&&
右边的命令(command2)
|| command1 || command2 ||左边的命令(command1)未执行成功(即返回非0)shell才 执行||右边的命令(command2)
四、控制语句 if case for while until break
if [条件1];then
执行第一段程序
else
执行第二段程序
fi
if [条件1];then
执行第一段程序
elif [条件2]then
执行第二段程序
else
执行第三段程序
fi
case $变量名称in
“第一个变量内容”)
程序段一
;;
“第二个变量内容”)
程序段二
;;
*)
其它程序段
exit 1
esac
for (( 初始值; 限制值; 执行步阶))
do
程序段
done
for var in con1 con2 con3 ...
do
程序段
done
第一次循环时,$var的内容为con1
第二次循环时,$var的内容为con2
第三次循环时,$var的内容为con3
......
while [ condition ]
do 程序段
done
当condition成立的时候进入while循环,直到condition不成立时才退出循环。
until [ condition ]
do 程序段
done
这种方式与while恰恰相反,当condition成立的时候退出循环,否则继续循环。
break 跳出本次循环
continue 跳过这个循环步骤
五、函数
函数名() {
命令 ...
}
function 函数名() {
命令 ...
}
调用函数的格式为:
函数名 param1 param2……
使用参数同在一般脚本中使用特殊变量
$1,$2 ...$9一样
函数可以使用return 提前结束并带回返回值
return 从函数中返回,用最后状态命令决定返回值。
return 0 无错误返回
return 1 有错误返回