Shell入门
1.shell【外壳】
- 是用户与linux共同的桥梁,Shell既是一种命令语言,又是一种程序设计语言。
- Shell属于内置的脚本,程序开发效率高,批量开发任务
- linux默认shell是**/bin/bash(重点)**
2.shell种类
-
csh【cshell】 具有C语言风格的Shell,已经被/bin/tcsh所取代
-
ksh
-
tcsh
-
sh 是一个快捷方式,被/bin/bash取代
-
nologin /sbin/nologin
#usermode -s /sbin/nologin 用户名
-
zsh 目前最庞大的一个shell,有84个内部命令,使用起来比较复杂,一般不用
-
bash 大多数Linux系统默认的shell
3.编写规范
代码规范:
**#!/bin/bash** 指定解释器的路径【告知系统当前这个脚本要使用的shell解释器】,不写也ok
Shell相关指令
文件命名规范:
文件名.sh
4.流程
- 创建.sh文件 touch/vim
- 编写shell代码
- 执行shell脚本 脚本得有执行权限
案例:创建test.sh,实现第一个shell脚本程序,输出helloworld
输出命令:echo 内容
注意:
- 输出的内容如果包含字母和符号(不包含变量),则需要用引号包括起来。如果是纯数字可以包也可以不包。
- 代码如果分两行写,语句尾部不用加" ;"号
执行二进制文件时,即使是当前路径下也要加上./,或者写绝对路径。否则系统会去环境变量PATH里面找。
执行方式一:
执行方式二:/bin/bash 脚本路径
5.shell进阶(重点)
变量
注意:
使用变量需要在变量名前加上$符号
eg: class_Name=“ruan”
echo $class_Name
变量后边等号的左右不能有空格
命名只能用英文字母,数字,下划线,首个字符不能以数字开头
中间不能有空格,可以用下划线"_"
不能用bash里的关键词
不能使用标点符号
esc键下方【`】,当需要将指令赋值给变量,或直接输出时需要
双引号能够识别变量【同样能实现转义】,单引号不能
eg:echo “$class_Name" >>ruan
echo '$class_Name' >>$class_Name
只读变量
在变量前只加上readonly 变量名
eg:x=”abc“
readonly x
接受用户输入
语法:read -p 提示信息 变量名
删除变量
语法:unset 变量
条件判断
语法:
if [ condition ]
then
commend1 commend2
elif condition2
then
commend3
else
commend
fi
运算符【算数运算符、关系运算符、逻辑运算符、字符串运算符、文件测试运算符】
算数运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
反引号`【esc下面】
注意:
- 表达式和运算符之间一定要有空格
- =号两边不能有空格
- *****号为通配符,在进行乘法运算时要加上\ *****进行转义
关系运算符
-eq:equal【=】
-ne:not equal【!=】
-gt:great than【>】
-lt:less than【<】
-ge:great than or equal【>=】
-le:less than or equal【<=】
逻辑运算符
!:非
-o:or,或运算
-a:and,与运算
字符串运算符
=:判断字符串是否相等
!=:判断字符串是否相等
-z:检测字符串长度是否为0 为0返回true if [ -z $a ]
-n:检测字符串长度是否为0 为0返回false if [ -n “$a” ]
str:检测字符串是否为空,不为空返回true
文件测试运算符
-b file:检测文件是否是块设备文件,是返回ture
-d file:检测文件是否是目录,是返回true
-f file:判断文件是否是是普通文件。
-r file:检测文件是否可读。
-w file:检测文件是否可写,是返回true。
-x file:检测文件是否可执行,是返回true。
-e file:检测文件(包括目录)是否存在,是返回true。
shell接受参数
#./test.sh a b c
可以用$1 $2 $3 来接受
$0代表执行的脚本文件