Shell简单笔记

来源:互联网 发布:三星手机 数据恢复 编辑:程序博客网 时间:2024/06/03 22:52
Shell=============
 http://www.runoob.com/linux/linux-shell.html
 Shell 在线工具:
 http://www.runoob.com/try/runcode.php?filename=helloworld&type=bash
 
 一、shell概念
 Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。
 Shell 脚本(shell script),是一种为shell编写的脚本程序。


 二、Shell运行环境
 Linux系统上有运行shell的解释器的环境下都可以运行shell脚本
 前市面上较知名的发行版有:Ubuntu、RedHat、CentOS都自带了解释器
 
 三、Linux下shell的解释器类型:
 /bin/sh
 /bin/bash
 /bin/tcsh
 /bin/ksh
 
 四、shell运行方式:
 (1).第一种方式:运行时指定解释器
 vi test01.sh
 echo "ni hao !"
 运行脚本:
 /bin/bash ./test01.sh
 /bin/sh ./test01.sh 
 
 (2).第二种方式:在脚本的第一行指定解释器
 vi test012.sh
 #!/bin/sh
 #echo "124"
 echo "456"
 给shell脚本添加可执行权限
 chmod u+x ./test02.sh 
 运行shell脚本:
 ./test02.sh
 结果:
 456
 
 五、shell语法操作:
 (1).Shell 变量
 定义shell变量时最好。。。按java的命名规则定义变量名
 注意,变量名和等号之间不能有空格
 变量名=值
 1.案例01:
 vi test03.sh
#!/bin/bash
name="zhang"
sex='nan'
echo $name
echo $sex
 
注意:shell脚本语言都可以使用单引号被双引号;
A.单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
***单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
#!/bin/bash
name="zhangyanpeng"
sex='leihao'
echo 'my name is $name'
输出结果:
my name is $name


B.双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
#!/bin/bash
name="zhangyanpeng"
sex='leihao'
echo "my name is $name"
输出结果:
my name is zhangyanpeng




只读变量 readonly


#!/bin/bash
name="zhangyanpeng"
echo "my name is $name"
readonly name
name="wo"
echo "$name"


运行:./test03.sh 
输出结果:
./test03.sh: line 4: name: readonly variable
zhangyanpeng
my name is zhangyanpeng


读取输入数据
echo "请输入密码:"
read num
echo “你输入的密码是:$num”




删除变量:unset 
#!/bin/bash
price=13.5
echo "$price"
unset price
echo "$price"


获取字符串的长度:
vi ./test04.sh 
#!/bin/bash
str="ABCD"
echo "${#str}"




./test04.sh 
4




符串第 2 个字符开始截取 4 个字符
vi ./test05.sh 
#!/bin/bash
str="ABCDEF"
echo "${str:2:4}"


./test05.sh 
CDEF




(2).数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。


定义数组
students=("zhangyangpeng" "changjiale" "laopan")
或者:
students=(
"zhangyangpeng" 
"changjiale" 
"laopan"
)


获取素组的值:
${数组名[下标]}
获取第一个元素
echo "${students[0]}"


./arra01.sh 
zhangyangpeng


获取数组的长度:
echo "${#students[@]}"
echo "${#students[*]}"




Shell 注释
以"#"开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号。
注意:第一行除外!






(3).Shell 基本运算符
算数运算符
关系运算符
布尔运算符
字符串运算符
文件测试运算符




bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr、seq,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):
A.算数运算符

-
*
/
%


vi test06.sh
#!/bin/bash
echo "$0"
echo "$1"
echo "$2"


v1=`expr $1 + $2`
v2=`expr $1 - $2`
v3=`expr $1 \* $2`
v4=`expr $1 / $2`
v5=`expr $1 % $2`
echo "$v1"
echo "$v2"
echo "$v3"
echo "$v4"
echo "$v5"


运行脚本:
./test06.sh 100 80
输出结果:
./test06.sh    --->$0 表示第一个参数 脚本文件名称自己了
100            --->$1 表示第二个参数 100
80             --->$2 表示第三个参数 80
180
20
8000
1
20


B.关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
假定变量 a 为 10,变量 b 为 20
-eq 检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。  --->equal
-ne 检测两个数是否相等,不相等返回 true。[ $a -ne $b ] 返回 true。not equal
-gt 检测左边的数是否大于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。-->greater than
-lt 检测左边的数是否小于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。 -->less than
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。-->greater equal
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true  ---> less equal
原创粉丝点击