shell

shell通常说的是shell脚本
shell只需要一个能编写代码的文本编辑器和一个能解释执行的脚本编辑器就行了

 

#shell是一个命令行解释器,遵循一定的语法将输入的命令加以解析并传给系统,提供了一个像Linux发生请求以便运行程序的接口系统程序,用户可以用shell来启动,挂起,停止甚至编写一些程序
#shell本身是由C编写的, shell既是一种命令行语言,也是一种程序设计语言(即shell脚本)
#shell只需要一个能编写代码的文本编辑器和一个能解释执行的脚本编辑器就行了
#shell有很多类型: Bourne Shell(/usr/bin/sh或者/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh), K Shell(/usr/bin/ksh)等...

 

#!/bin/sh
echo "hello world"

#!是一个固定的标记,来说明当前脚本需要什么解释器(哪种shell)来执行,
#echo向窗口输出文本


#给脚本添加执行权限 
chmod +x test.sh
#执行脚本
sh test.sh 

shell变量不加美元符合(php加$)
name="yyfer"
1 首个字符必须为字母,大写或者小写都可以
2 中间不能有空格,=与变量之间也不能有空格,可以用下划线
3 不能使用标点符号
4 不能使用bash里面的关键字(使用help查看关键字)

使用变量, 加$就可以 
name="yyfer"
echo $name
echo ${name}
变量外面的{},可以不加, 推荐加上去, 养成好的编程习惯

#已经定义的变量可以再次定义
name="yyfer"
echo $name
name="yyfer2"
echo $name
#再次定义变量的时候, 不需要加$符号,只有使用变量对应值的时候才加$

#可以用readonly定义只读变量
name="yyfer"
echo $name
readonly name
name="yyfer2"
echo $name
#当readonly变量,再次定义的时候,会报错: test.sh: line 7: name: readonly variable

#删除变量,unset
name="yyfer"
echo $name
unset name
echo $name #没有输出
#unset 不能删除只读变量

#运行shell有3中变量类型
#局部变量: 局部变量在shell脚本定义. 仅在当前shell实例中有效, 其他shell不能访问
#环境变量: 所有的程序包括shell启动的程序都是可以访问环境变量的,有些程序需要环境变量来保证器正常运行, 必要的时候shell脚本也可以定义环境变量
#shell变量: shell变量是shell程序定义的变量, 一些是环境变量一些是局部变量

#变量类型
#数字和字符串
#字符串可以加单引号或者双引号,也可以不加引号,单双引号的区别跟PHP类似
name="yyfer"
str='name:$name'
echo $str
#单引号的任何字符都会原样输出,单引号里的变量是无效的
#单引号字符串中不能出现单引号(对单引号转义也不行)
name="yyfer"
str="name=\"$name\"!"
echo $str
#双引号可以有变量,也可以出现转义字符

#字符串拼接
name="yyfer"
str1="name:"$name" !"
str2="name:$name !"
echo str1
echo str2
#不需要任何连接符,也可以将变量放到双引号中,直接转义

#获取字符串长度
name="yyfer"
echo ${#name}
#这个时候{}不能省去

#提取子字符串
str="hello world, yyfer"
echo ${str:1:4}
#字符串位置从0开始计算, 从第2个字符开始截取4个字符

#shell数组 只支持一维数组
name=(1 2 3 4) #空格隔开
name[5]=5
echo ${name[5]}
echo ${#name} #获取数组长度
#可以直接给某个下标赋值,下标可以不连续,
#${数组名[下标]}读取数组元素
#${数组名[@]}获取数组全部元素

shell没有多行注释, 只能用#单行注释

 

posted on 2017-02-20 11:49  Slege  阅读(112)  评论(0编辑  收藏  举报

导航