运行shell脚本的两种方法:
1.作为可执行程序
将脚本保存为shell.sh,并cd到相应目录:
chmod
+
x
./
test
.
sh
#使脚本具有执行权限
./
test
.
sh
#执行脚本
执行结果:
2.作为解释器参数
直接运行解释器,其参数就是shell脚本的文件名,如
/bin/
sh test
.
sh
/
bin
/
php test
.
php
执行结果:
定义shell变量:
your_name="xujiming"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 首个字符必须为字母(a-z,A-Z)。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
定义如下脚本:
执行脚本:
已定义的变量可以重新定义:
执行结果:
注意,第二次赋值的时候不能写$your_name="xujifeng",使用变量的时候才加美元符($)。
只读变量:
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
执行结果报错:
删除变量:
使用 unset 命令可以删除变量。语法:unset variable_name
定义shell5.sh
执行结果:
删除后没有任何输出。
Shell字符串:
字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号
your_name
=
'qinjx'
str
=
"Hello, I know your are \"$your_name\"! \n"
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
定义字符串:
执行结果:
拼接字符串
执行结果:
获取字符串长度:
执行结果:
提取子字符串:
以下实例从字符串第 2 个字符开始截取 4 个字符:
执行结果:
查找子字符串:
string
=
"runoob is a great company"
echo
`expr index "$string" is`
# 输出 8
注意:
以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。
Shell 数组:
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似与C语言,数组元素的下标由0开始编号。获取数组中的元 素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
定义数组:
在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值
1
值
2
...
值
n
)
定义数组,读取元素,获取数组的长度:
执行结果:
Shell 注释:
以"#"开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号。
#--------------------------------------------
# 这是一个注释
# author:xujiming
# site:www.runoob.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------