shell基础
shell基础
程序规范
首先说明使用的是什么shell,如:#!/bin/bash (#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径,比如#!/bin/python2.7 和 #!/bin/python3)
注明该脚本的内容功能、操作系统版本信息、文件创建者等
运行方式
bash<文件名
bash文件名
.文件名(不创建子进程)
./文件名(需要可执行权限)
通过在PATH变量添加路径
常用命令
echo
echo要使用转义字符时需要加上-e
如echo-e “hahaha\nhahaha”
输出有颜色、粗体的字体
1.有颜色:echo -e "\033[字背景颜色;字体颜色m 字符串 \033[0m"
\033[ ; m …… \033[0m 指明颜色的开始和结束,如果不指明结束,后边所有的都是那个颜色格式
字背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字体颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
2.加粗
\033[0m 关闭所有属性
\033[1m 设置高亮度 (就是加粗)
\033[4m 下划线
响铃:[Ctrl+G]<=>\007
清屏:[Ctrl+L]
read
读取用户输入,并赋值给用户自定义变量
注:从输入设备读取1行,第1个字符串存入第1个变量,第2个字符串存入第2个变量……如果输入字符串个数多馀定义的变量,则所有剩馀字符串赋值给最后1个变量
test(测试字符串、数值、文件属性)
test命令测试的条件成立时,命令返回值为真(0),否则返回值为假(非0).
可以使用逻辑运算符:-a-o ! (与、或、非)
if [ -f $filename ] 中括号和里边的内容之间至少一个空格
[jcuan@localhostunix]$ if [ 1 ];then echo "hahahha"; fi
hahahha
[jcuan@localhostunix]$ if [ 0 ];then echo "hahahha"; fi
hahahha
因为写在一行,所以要用分号
注意!!中括号就是代表test!按照上边这么写是完全没有意义的
数值判断
-eq 数值1与数值2是否相等
-ne 数值1与数值2是否不相等
-gt 数值1是否大于数值2
-ge 数值1是否大于或等于数值2
-lt 数值1是否小于数值2
-le 数值1是否小于或等于数值2
字符串的比较
= 字符串1与字符串2是否相同
!= 字符串1与字符串2是否不相同
-n 字符串是否包含字符(长度非0)
-z 字符串是否为空串(长度为0)
文件属性
-r 文件file是否存在并且可读
-w 文件file是否存在并可写
-s 文件file是否存在并且长度非0
-f 文件file是否存在并且不是目录文件
-d 文件file是否存在并且是一个目录文件
expr
用于计算表达式的值
只能是整数。 注意*、%需要转义
用于数字和非数字参数的关系运算符
如果是数字,则比较数值
如果是非数字的,则比较ASCII值
比较结果为真,expr显示1;结果为假,expr显示为0
关系运算符:等于(=)、不等于(!=)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=)
示例:
[root@localhostmjliu]# expr Gabe = gabe
0
[root@localhostmjliu]# expr Gabe = Gabe
1
[root@localhostmjliu]# expr 5 \< a
1
exit终止shell程序的执行
格式:exit n #n是退出状态(返回码),如果没有n,则返回执行的最后一条命令的退出值
结构
if [ 表达式]
then 命令表
fi
if [ 表达式1]
then命令表1
elif [ 表达式2]
then命令表2
else 命令表3
fi
case 只能检测字符串变量
case 值in
模式1)
命令1;;
模式2)
命令2;;
模式3)
命令3;;
esac
最后一个模式常写为字符*表示所有其它模式
for变量
in 变量列表
do
命令
done
while[ 条件]
do
命令
done
break语句
从包含该语句的最近一层循环中跳出一层, break n 则跳出n层;
函数
函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。
调用程序可传递参数给函数,函数可用return语句把运行结果返回给调用程序。
函数只在当前shell中起作用,不能输出到子shell中
函数格式:
function_name( )
{
command1
……
commandn
}
函数调用格式:
function_name arg1 arg2 …
shell调试
格式:bash [-nvx] scripts
-n:不执行脚本,查询脚本内的语法,若有错误则列出
-v:在执行脚本之前,先将脚本的内容显示在屏幕上
-x:将用到的脚本内容显示在屏幕上,与-v稍微不同