赞
踩
Shell俗称壳,是linux命令,也是一种编程语言,编程语言就有很多语法
我们常说的sh,一般只bash,也就是 Bourne Again Shell,由于易用和免费,在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell
一、运行脚本
1)直接在脚本目录脚本文件 如test.sh
./test.sh
(1)这种执行方法在sh文件里面需要标注解析器类型 格式是#!/bin/bash(如果是php文件就应该是#!/bin/php)
(2)/bin/bash和/bin/sh一样
(3)这种模式运行有时候需要注意权限问题
2)使用解析器执行 如test.sh
/bin/bash test.sh
/bin/php test.php
二、shell变量
1)变量定义和使用
name="test"
(1)name为变量名,变量名为不需要符号开头
(2)变量名和赋值符号=之间不能有空格
echo $name || echo ${name}
(1)使用shell变量需要加$符号
(2)变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解析,建议全部使用
readonly age
age=20
(1)定义只读变量,只读变量不能被赋值修改 否则报错
unset name
(1)删除变量,删除后变量不能使用,删除变量不能删除只读变量
1)变量的类型
局部变量
当前shell声明,仅在当前shell实例中有效
环境变量
所有的程序,都能访问环境变量。必要的时候shell脚本也可以定义环境变量
shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量
三、字符串
1)单引号和双引号的区别
单引号不转意、双引号内的变量和特殊字符串会转意
2)字符串拼接
(1)直接将字符串放在一起就可以拼接
$str1$str2
(2)可以使用双引号 双引号中间可以添加其他字符串
"${str1}:${str2}"
3)获取字符串的长度
(1)获取字符串长度
${#str}
(2)获取指定位置字符串
${str:1:4} 截取第2个字符到第4个字符
4)查找子字符串
(1)echo `expr index "$string" a` 注意是反斜杠
四、数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
(1)数组的定义
name=(value0 value1 value2 value3)
也可以
name[0]=value0
(2)数组的使用
value=${name[0]} 获取第一个元素
echo ${name[@]} 输出所有元素
(3)获取数组的长度
length=${#name[@]} 获取所有元素个数
lengthn=${#name[n]} 获取单个元素长度
五、注释
1)单行注释
#
2)多行注释 EOF可以换成其他符号
:<
内容...
EOF
六、参数传递
1)在某些场景下,我们需要传入参数到shell内,或者shell需要获取某些参数
./test.sh
$0 执行文件名 ./test.sh
$1 执行参数 第一个为$1,第二个为$2 依次类推
$# 传递参数个数
$* 以字符串行书返回所有参数
$$ 脚本运行的进程ID
七、运算
注意:在linux 中 命令执行状态:0 为真,其他为假
1)算术运算
+ `expr $a + $b`
- `expr $a - $b`
* `expr $a \* $b`
/ `expr $a / $b`
% `expr $b % $a`
= $a=$b
== [ $a == $b ]
!= [ $a != $b ]
2)关系运算
-eq [ $a -eq $b ] 是否相等
-ne [ $a -ne $b ] 是否不相等
-gt [ $a -gt $b ] 左是否大于右
-lt [ $a -lt $b ] 左是否小于右
-ge [ $a -ge $b ] 左是否大于等于右
-le [ $a -le $b ] 左是否小于等于右
3)布尔运算
! [ ! false ] 非运算
-o [$a -lt 20 -o $a -gt 30] 或运算
-a [$a -lt 20 -a $a -gt 10] 与运算
4)逻辑运算
&& && 与
|| || 或
八、流程控制
1)if else
(1)单个if
if condition
then
...
fi
(2)单个if else
if condition
then
...
else
...
fi
(3)多个if else
if condition1
then
...
elif condition2
then
...
else
...
fi
2)for 循环
for var in item1 item2 ... itemN
do
...
done
3)while语句
while condition
do
...
done
无限循环
while true
do
...
done
4)case语句
case 值 in
模式1)
...
;;
模式2)
...
;;
esac
5)跳出循环 break continue
九、函数
1)函数定义
[ function ] funname [()]
{
action;
[return int;]
}
(1)可以带function fun() 定义,也可以直接fun() 定义,不带任何参数
(2)参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值
(3)return后跟数值n(0-255)
(4)函数返回值在调用该函数后通过 $? 来获得
(5)所有函数在使用前必须定义,调用函数仅使用其函数名即可
十、文件引入
source file 或者 . file (.和file之间有空格)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。