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
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
阅读全文
0 0
- Linux Shell简单笔记
- shell简单笔记
- Shell简单笔记
- 笔记:Linux shell(一): 简单入门
- shell学习笔记(2) 一个简单的shell脚本程序
- 简单shell
- shell脚本学习笔记--一个简单的脚本
- MongoDB 学习笔记(一):安装及简单shell操作
- scala学习笔记5 spark-shell的简单操作
- hadoop 学习笔记005(shell命令简单了解)
- [shell]shell脚本笔记
- shell笔记
- shell笔记
- shell笔记
- shell笔记
- Shell笔记
- Shell笔记
- shell笔记
- kotlin学习day5:数据类
- 今天学习内容
- 3223: Tyvj 1729 文艺平衡树
- 找第一个只出现一次的字符
- 【netbeans】Your active platform is: JDK_1.6, but the corresponding property...怎么解决
- Shell简单笔记
- jQuery实现二级联动
- 剑指Offer—34—第一个只出现一次的字符位置
- Unity_简易飞机大战制作(一)
- HTML5多媒体
- 基于MapReduce的二次排序
- windows8.1+VS2013下CUDA7.5配置
- 初阶一层的星号*玩法
- 网页中调用百度地图API