1,运行shell脚本有两种办法一般有两种:
先给可执行权限,再进入文件所在的目录,输入:./name.sh;
运行解释器再执行脚本:/bin/sh name.sh,这种情况下,脚本中可以没有#!/bin/bash的情况。
2,shell变量
变量命名规则:
-
命名只能使用英文字母,数字和下划线,首个字符不能以数字
开头。
- 变量名和等号,变量名中间也不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字
变量赋值:
直接赋值
可以使用for xx in name 循环,for i in " ls /home" for i in $(ls /home) ; ps:第一种i会直接等于‘ls /home',这和python不一样,它直接就是整个的字符串,第二种比较靠谱,遍历所有/home下的文件夹和文件名。还有一种要区分一下,是for i in `ls /home`,(注意这不是引号,是~那个键),作用和$()一样
使用变量:
比如: your_name="qinjx'
用法1:echo $your_name $直接加变量名字
用法2:echo ${your_name} ${}中间是变量名字,花括号有助于帮助shell识别边界。
比如:your_name="qinjx"
greeting="hello, "$your_name" !" #用法1
greeting_1="hello, ${your_name} !" #用法2
特殊用法:只读变量:readonly your_name,加上readonly以后,该变量只能被读,不能被重新赋值,不能改变。
删除变量:unset your_name ,注意不可以删除只读变量
变量类型
1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
shell字符串
shell中变量的类型基本就两种,数字和字符串,字符串可以使用单双引号来表明,双引号比较好,因为双引号内部支持转义字符和引用其他变量。
比如:
astring='qinjx'
str="Hello, I know you are \"$astring\"! \n"
常用字符串操作
astring="hello shell"
获取字符串长度:echo ${#astring} 输出11
截取字符串:echo ${astring:0:4} 输出hell 和python不同,它表示从0后面的个字符串开始,向后截取4个,顺便说一句,shell的下标和python不一样,shell下标从1开始。
查找字符串:echo 'expr index "$astring" o` 输出5 。(这是反引号)意思是从变量astring中查找字符o,
3 shell数组
shell支持数组。数组的下标从0开始。数组用小括号表示,数字之间用空格分开。
数组的定义方法1:alist=(1 2 3 4 5)
方法2:alist[0] =1;alist[1]=alist[2]=3;alist[3]=4...
读取数组:${数组名[下标]},比如${alist[0]} ,@可以表示数组中所有的下标:${alist[@]}
获得数组元素个数:echo ${#alsit[@]}
获得数组某个元素的长度:echo ${#alist[number]}
4 shell注释
两种注释应该够用了。
1,#在开头
2,
:<<EOF
注释内容...
注释内容...
注释内容...
EOF