1.Shell脚本的基础:
Shell脚本是基本命令的组合,结合命令流程控制。
第一行(顶格写):#! /bin/bash
Shell脚本的运行方式:(1)首先要使脚本具有执行权限: chmod +x test.sh 然后./test.sh执行脚本
(2)bin/sh test.sh
2.Shell脚本中变量类型:本地变量(局部变量)、环境变量、位置变量、特殊变量
(1)本地变量(局部变量):本地整个bash进程都可以使用,仅对当前代码段有用,其他shell启动的程序不能访问局部变量
(2)环境变量:作用域为当前shell进行及其子进程,命令行中启动的脚本会继承当前shell环境变量,系统自动执行的脚本(非命令行启动)就需要自我定义需要的环境变量
(3)位置变量:$1,$2,用来传递参数
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
例如:#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
(4)特殊变量: $?:保存上一个命令执行状态返回值 $#:输入参数的个数 $*:参数列表 $@:参数列表
$0:执行脚本的名字 $_:代表上一个命令的最后一个参数 $!:代表最后执行的后台命令的PID
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
例如以下shell脚本例子:
#!/bin/bash
echo "-- \$* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
echo $i
done
shell脚本的执行:
$ chmod +x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3
3.变量的操作:
(1)变量名称:只能包含字母、数字、下划线,并且不能以数字开头,不能与系统已有变量重名,见名知意
(2)变量定义: your_name="runoob.com"注意,变量名和等号之间不能有空格,要区别于编程语言中的编程习惯
(3)查看变量: set:查看所有变量 查看当前shell中的环境变量(printenv、env、export)
(4)变量引用: ${NAME},如果要打印变量则使用echo ${NAME}
(5)撤销变量: unset VARNAME
(6)打印变量长度: var="ddddddd" echo ${#var}
(7)双引号: 双引号里可以有变量 ,比如:echo时对变量进行替换,echo "${PATH}"
双引号里可以出现转义字符,比如:echo -e "asdn\nadadss"
(8)单引号: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;echo时不做变量替换,echo '${PATH}'
例如:echo 'nihao'nihao'ssss' 输出为:nihaonihaossss
echo 'nihao"sss"lll' 输出为:nihao"sss"lll
echo 'nihao"${PATH}"sadad' 输出为:nihao${PATH}sadad
(9)提取子字符串: string="runoob is a great site" echo ${string:1:4} # 输出 unoo