Shell脚本基础总结
2014-06-30 16:22
337 查看
1、 Shell脚本的执行方式
a)
sh命令执行:sh
hello.sh
b)
给脚本文件添加执行权限,使用./命令执行:chmod 755 hello.sh ./hello.sh
2、 Shell的基本元素
a) #!/bin/bash: 指出shell的类型,不指定的话默认是 /bin/sh
b) 注释:#注释内容
c) 变量:${变量名}
d) 控制:
3、 Shell中的特殊符号
a) 注释符# 除了#!/bin/bash里的#特殊
b) 美元符$
变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来
c) 单引号 被引起的字符全部做普通字符,即全部原样
echo
‘my $SHELL’
d)
双引号
引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。
e)
倒引号(数字1键旁边的那个键)
引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
f)
反斜线
反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
4、 Shell变量
a)
本地变量
(局部变量):只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。
本地变量 在用户现在的shell生命期的脚本中使用
变量名=值
注意:
(1)等号两边不可以有空格
(2)取值包含空格,必须用双引号括起来
(3)Shell变量可以用大小写字母,区分大小写
变量的声明和使用
(1)变量是弱类型的(不用声明类型)
(2)变量声明及赋值格式
变量=值(等号两边不能有空格)
(3)变量的引用
$变量名
${变量名}
b)
环境变量:可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们 。还能在shell中加以修改。
u
环境变量可以在命令行中设置,但用户注销时这些值将丢失
u
环境变量均为大写
u
必须用export命令导出
(1)
设置环境变量
variable-name=value
export variable-name(环境变量名大写)
(2)
显示环境变量
env 可以看到所有的环境变量
echo $环境变量名 (显示一个变量)
(3)
清除环境变量
unset 环境变量名
c)
内部变量:由系统提供的。与环境变量不同,用户不能修改它们。
$#——传送给shell程序的位置参数的数量
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)
$0——shell程序的名称
$*——调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数
$@——“参数1”“参数2”…形式保存的参数
$n——第n个参数
$$——本程序的PID
$!——上一个命令的PID
5、 条件测试
可以判断脚本程序运行的状态
主要有三种形式:
a)
test expression
b)
[ expression ]
c)
[[ expression ]]
注意:
n
方括号的内侧两边各需一个空格
n
如果测试条件为真,test命令会返回0,否则返回一个非0的数值
n
test 语句与if/then和case语句一起,构成shell编程的控制转移结构
区别test、[、[[
n
test、[
是 bash命令。
n
[[ 是bash程序语言中的关键字。
n
[[ 中使用
&& 和
||逻辑符号,可用通配符(使用通配符时字符串不要引号);
Expression:
(1)
数值测试
-lt 小于 -le 小于等于 -gt 大于
-ge 大于等于 -eq 等于 -ne 不等于
(2)
文件测试
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
(3)
字符串测试
test
s 字符串s非空
test
s1=s2 字符串s1等于s2
test
s1!=s2 字符串s1不等于s2
test
–z s 字符串长=0,即为空串
test –n
s 字符串长>0
(4)
其他参数
-a 逻辑与
-o 逻辑或
! 逻辑非
6、 控制流程
a)
分支语句:if-then-else和case
if分支
if
[ $# -eq 0 ]
then
echo “输入了0个参数”
elif
[ $# -gt 1 ]
then
echo “输入了多个参数”
else
echo “输入了1个参数”
fi
case
case
“$#” in
0) echo “输入了0个参数” ;;
1)
echo “输入了1个参数” ;;
*) echo “输入了多个参数”;;
esac
每个分支条件后必须以两个分号结尾
一些比较有用的命令:
seq命令:产生1-9的数字序列;
expr命令:将其后的串解释为表达式并计算其值,运算符前后需有空格;用于整数值运算。
$[]将中括号内的表达式作为数学运算先计算结果再输出。
let表示强制进行数学运算,以为系统默认“+”等运算符是作为字符串处理的。
let
“a+=1"
a=$[
$a + 1 ]
a=$(($a+1))
a=`expr
$a + 1` #加号两边要有空格
前两种方式在bash下有效,在sh下会出错。
b)
循环语句:for
while和until
for
例子——输出100内10的倍数
for i in `seq 1 9`
do
echo `expr $i \* 10`
done
read
变量1 [变量2 …]
可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。
如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;
如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。
while例子——求1到100的和
i=1
sum=0
while
[ $i –le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
a)
sh命令执行:sh
hello.sh
b)
给脚本文件添加执行权限,使用./命令执行:chmod 755 hello.sh ./hello.sh
2、 Shell的基本元素
a) #!/bin/bash: 指出shell的类型,不指定的话默认是 /bin/sh
b) 注释:#注释内容
c) 变量:${变量名}
d) 控制:
3、 Shell中的特殊符号
a) 注释符# 除了#!/bin/bash里的#特殊
b) 美元符$
变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来
c) 单引号 被引起的字符全部做普通字符,即全部原样
echo
‘my $SHELL’
d)
双引号
引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。
e)
倒引号(数字1键旁边的那个键)
引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
f)
反斜线
反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
4、 Shell变量
a)
本地变量
(局部变量):只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。
本地变量 在用户现在的shell生命期的脚本中使用
变量名=值
注意:
(1)等号两边不可以有空格
(2)取值包含空格,必须用双引号括起来
(3)Shell变量可以用大小写字母,区分大小写
变量的声明和使用
(1)变量是弱类型的(不用声明类型)
(2)变量声明及赋值格式
变量=值(等号两边不能有空格)
(3)变量的引用
$变量名
${变量名}
b)
环境变量:可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们 。还能在shell中加以修改。
u
环境变量可以在命令行中设置,但用户注销时这些值将丢失
u
环境变量均为大写
u
必须用export命令导出
(1)
设置环境变量
variable-name=value
export variable-name(环境变量名大写)
(2)
显示环境变量
env 可以看到所有的环境变量
echo $环境变量名 (显示一个变量)
(3)
清除环境变量
unset 环境变量名
c)
内部变量:由系统提供的。与环境变量不同,用户不能修改它们。
$#——传送给shell程序的位置参数的数量
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)
$0——shell程序的名称
$*——调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数
$@——“参数1”“参数2”…形式保存的参数
$n——第n个参数
$$——本程序的PID
$!——上一个命令的PID
5、 条件测试
可以判断脚本程序运行的状态
主要有三种形式:
a)
test expression
b)
[ expression ]
c)
[[ expression ]]
注意:
n
方括号的内侧两边各需一个空格
n
如果测试条件为真,test命令会返回0,否则返回一个非0的数值
n
test 语句与if/then和case语句一起,构成shell编程的控制转移结构
区别test、[、[[
n
test、[
是 bash命令。
n
[[ 是bash程序语言中的关键字。
n
[[ 中使用
&& 和
||逻辑符号,可用通配符(使用通配符时字符串不要引号);
Expression:
(1)
数值测试
-lt 小于 -le 小于等于 -gt 大于
-ge 大于等于 -eq 等于 -ne 不等于
(2)
文件测试
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
(3)
字符串测试
test
s 字符串s非空
test
s1=s2 字符串s1等于s2
test
s1!=s2 字符串s1不等于s2
test
–z s 字符串长=0,即为空串
test –n
s 字符串长>0
(4)
其他参数
-a 逻辑与
-o 逻辑或
! 逻辑非
6、 控制流程
a)
分支语句:if-then-else和case
if分支
if
[ $# -eq 0 ]
then
echo “输入了0个参数”
elif
[ $# -gt 1 ]
then
echo “输入了多个参数”
else
echo “输入了1个参数”
fi
case
case
“$#” in
0) echo “输入了0个参数” ;;
1)
echo “输入了1个参数” ;;
*) echo “输入了多个参数”;;
esac
每个分支条件后必须以两个分号结尾
一些比较有用的命令:
seq命令:产生1-9的数字序列;
expr命令:将其后的串解释为表达式并计算其值,运算符前后需有空格;用于整数值运算。
$[]将中括号内的表达式作为数学运算先计算结果再输出。
let表示强制进行数学运算,以为系统默认“+”等运算符是作为字符串处理的。
let
“a+=1"
a=$[
$a + 1 ]
a=$(($a+1))
a=`expr
$a + 1` #加号两边要有空格
前两种方式在bash下有效,在sh下会出错。
b)
循环语句:for
while和until
for
例子——输出100内10的倍数
for i in `seq 1 9`
do
echo `expr $i \* 10`
done
read
变量1 [变量2 …]
可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。
如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;
如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。
while例子——求1到100的和
i=1
sum=0
while
[ $i –le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
相关文章推荐
- Linux学习笔记(三)——Shell脚本基础总结
- Linux_Shell脚本基础总结
- Linux学习笔记(三)——Shell脚本基础总结
- shell脚本编程基础总结
- Linux 的shell脚本基础编程总结
- shell脚本基础及细节总结
- 测试基本功-Shell脚本编程基础教程
- shell脚本基础
- SHELL脚本的基础知识2——使用结构化命令
- SHELL脚本的基础知识3——更多结构化命令
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- rhel下shell脚本的语法总结
- shell脚本基础知识。
- 脚本文件(shell perl python)编程的总结的框架。
- shell脚本系列-awk用法总结
- shell脚本系列-grep用法总结
- shell脚本中一些特殊符号的总结
- shell脚本的基础知识1:基本脚本的编译
- 非常不错的脚本入侵基础知识总结第1/2页
- SHELL脚本的基础知识5——显示数据