shell就是用户与linux交换的一款语言
后缀名为.sh的就是shell脚本,效果等同windows的.bat文件 || 运行脚本命令为:./路径/脚本名.sh
编写第一个shell
#! /bin/bash //shell默认必须要的头部信息
echo "hello world" #echo表示为输出语句等价于java的sout
权限修改
如果在运行时发现权限不足使用ls -l查看文件详细信息
文件开头以四部分组成:如:①- ②rw- ③r-- ④r--
一(-): -、d、l || -表示这是一个文件,d表示这是一个目录,l表示这是一个快捷方式
二三四部分值相同意义不同:r、w、x、- ||r(4)表示可读,w(2)表示可写,x(1)表示执行,-(0)表示没有权限
二表示创建文件的用户具有的权限,三表示当前创建文件的用户所在的组成员具有的权限,四表示其他用户具有的权限
修改权限命令:chmod u+rwx g+rwx o+rwx 文件名 || 增加权限
chmod u-rwx g-rwx o-rwx 文件名 || 删除权限
chmod 735 文件名 || 通过数字相加的值修改权限
变量
shell是一门弱语言,没有变量类型
#! /bin/bash
name="aaa"; #命名变量可以直接使用
echo "姓名为:${name}"
echo "姓名为:"${name}
传递参数
执行shell脚本时传递参数值
#! /bin/bash
echo "第一个参数:$1"
echo "第二个参数:$2"
............. #假设文件名为a.sh
#执行格式
./a.sh 我是第一个参数 我是第二个参数
数组
数组可以存放多个值,Bash Shell 只支持一维数组不支持多维,初始化时不需要定义数组大小
与大多数编程语言类似,数组元素下标由0开始
shell数组用括号表示,元素用空格分隔
array_name=(value1 value2 ... value)
关联数组(map集合)
Bash支持关联数组,可以使用任意字符串或整数作为下标访问数组
#格式:declare -A site={[键]="值"} 注:键是唯一的
declare -A site={["name"]="张三" ["phone"]="110" ["sex"]="男"}
基本运算符
算数运算符
原生bash不支持简单数字运算,但是可以通过awk或expr实现
expr是一款表达式计算工具,使用它可以完成表达式的求值
#! /bin/bash
a=10
b=5
c=`expr $a / $b`
echo "a+b=$c"
关系运算符
a=10
b=20
if [ $a -eq $b ]
then #if执行语句
echo "$a -eq $b : a 等于 b"
else #else语句
echo "$a -eq $b: a 不等于 b"
fi #结束语句
布尔运算符
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
控制语句
if
a=10
b=20
if [ $a -eq $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
for
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done