Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
Linux 的 Shell 种类众多,常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh) #!/bin/sh
- Bourne Again Shell(/bin/bash) #!/bin/bash
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
运行 Shell 脚本的方法
echo
用于在shell中打印shell变量的值,或者直接输出指定的字符串。
语法
echo(选项)(参数)
选项
-e:激活转义字符。
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a发出警告声;\b删除前一个字符;\c不产生进一步输出 (\c 后面的字符不会输出);\f换行但光标仍旧停留在原来的位置;\n换行且光标移至行首;\r光标移至行首,但不换行;\t插入tab;\v与\f相同;\插入\字符;\nnn插入nnn(八进制)所代表的ASCII字符;
参数
变量:指定要打印的变量。
变量
变量命名
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线 _。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
设定变量:variable="variable_name"
引用变量:${variable}
设定只读变量:readonly variable_name
删除变量:unset variable_name
变量类型
运行shell时,会同时存在三种变量:
- 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
Shell 字符串
单引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
获取字符串长度
string="abcd"
echo ${#string} # 输出 4
提取子字符串
string="runoob is a great site"\
echo ${string:1:4} # 输出 unoo
第一个字符的索引值为 0。
查找子字符串
string="runoob is a great site"\
echo `expr index "$string" io` # 输出 4
传递参数
向脚本传递参数,脚本内获取参数的格式为: $n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
1 #!/bin/sh
2 variable="cd /home"
3 echo ${variable}
4 echo $1
5 echo $2
6 echo "全部的输入参数: $*"
7 echo "全部的输入参数的数组:$@"
8 echo "输入参数的个数:$#"
数组
array_variable=(value1 value2 value3) 定义数组
echo "数组:${array_variable}"
echo "数组索引1:${array_variable[0]}" 数组索引
echo "获取数组的所有元素;${array_variable[*]} 和 ${array_variable[@]}" 获取所有数组
echo "获取数组的所有元素的个数;${#array_variable[*]} 和 ${#array_variable[@]}" 获取数组个数