小白如何快速掌握shell脚本,shell最全解析

目录

如何创建一个shell文件:

1、概括

2、创建:后缀名一般为:    .sh

①vim +文件名.sh

②编辑shell脚本

 ③运行1.sh文件

 shell变量

1、自定义变量

2、位置参数

3、 预定义变量

shell程序和语句

1、输出

2、输入

test测试   

测试字符串

 测试整数

测试文件属性

shell控制语句

 选择语句

单分支选择语句

双分支选择

 多分支结构

 case

 循环语句

for语句

 while语句


如何创建一个shell文件:

1、概括

shell脚本就是一堆命令的集合,将多个命令写到一块,一起执行。

2、创建:后缀名一般为:    .sh

①vim +文件名.sh

②编辑shell脚本

 开头写:#!/bin/bash      

目的:告诉计算机使用哪个版本的shell来解析我们代码

 ③运行1.sh文件

会发现我们的权限不够

我们可以给这个文件加可执行权限

这两种方法都可以:chmod是给文件加减权限用的

再./1.sh就可以运行了 

 shell变量

1、自定义变量

shell允许用户建立  变量存储类型,但它不支持数据类型,任何被赋值给变量的值都被解释为一串字符。

 命名和C语言差不多

1、由数字、字母、下划线组成。不能以数字开头。

2、在shell中通常用大写字母写

 echo和C语言中的print类似,后面会详细介绍

取变量的值时,要在变量前面加$

在shell中字符串用双引号或者单引号都可以

2、位置参数

shell中参数可以用$1 $2 $3 ....$n表示,在执行文件后面输入要执行的参数

如果$超过9,比如10要加括号,不然计算机会当成$1来处理 

$1-$10会根据你的实参参数进行输出

3、 预定义变量

$#:包含命令行参数的个数

$@:包含所有的命令行参数

$*:包含所有的命令行参数

 $@和$*的区别

 $?:包含前一个命令的退出状态,正常退出返回0,反之为非0 (shell中,0为真,非0为假)

 创建成功会返回0;

shell程序和语句

1、输出

echo: 自带换行

echo -n:不带换行

在下面输入里演示

2、输入

1、read +空格加入输的变量就可以

 2、加提示语输入两种

①用echo加提示语

 ②用read -p来增加一条提示语

(1)紧跟输入提示语后面   

 提示语输入完要加空格,不然就会这样

 (2)换行输入变量

(3)如果只有两个变量,但输入的三个字符串怎么办

 如果想前面NUM1有两个字符串

 shell中实现加减乘除取余

expr用于简单的整数运算,包括+、-、\*、/、%,切记shell中的*法要加\

注意:expr和变量以及变量和运算符之间必须添加空格

 在Shell中,反引号 ` ` 是一种用于执行命令并将其输出作为字符串返回的方法。键盘tab建上面那个键

test测试   

一般在中括号中执行[    ],[]里面两边必须空格

测试字符串

s1 = s2  测试两个字符串的内容是否完全一致

echo $?返回如果相等输出0,不相等输出非零数

s1 != s2  测试两个字符串的内容是否有差异

 测试整数

a -eq b  测试a与b是否相等

a -ne b  测试a与b是否不相等

a -gt b   测试a是否大于b

a -ge b  测试a是否大于等于b

a -lt b   测试a是否小于b

a -le b   测试a是否小于等于b

利用前面讲的传参方法,$1和$2相等返回0,不相等返回非0. 

测试文件属性

-d name 测试name是否一个目录

-e name 测试name是否存在

-f name 测试name是否普通文件

-L name 测试name是否为链接文件

-r name 测试name文件是否存在且可读

-w name 测试name文件是否存在且可写

-x name  测试name 文件是否存在且为可执行

-s name   测试name 文件是否存在且其长度不为0

其他类似

shell控制语句

 选择语句

单分支选择语句

if [  ]

then

        语句

fi

双分支选择

if [ 表达式 ]

then

语句1

else

语句2

fi

案例:

  1. 请输入一个文件名,判断他是否为普通文件如果是普通文件,判断它是否有写的权限如果有写的权限,向文件中写入“hello world”如果没有写的权限,给它添加写的权限,然后再写入“hello world”

 多分支结构

if [表达式1]

then

语句1

elif [表达式2]

then

语句2

...

elif [ 表达式n ]

then

语句n

else

语句n+1

fi

 case

case 字符串变量 in

模式1)

命令表1

;; //类似与break,但是;;不能省略,最后一个可以省略

模式2 | 模式3)

命令表2

;;

.........

模式n)

命令表n

;;

     *)//类似于c中的default

命令表n+1

;;

esac

案例:

  1. 请输入想要下载的文件的名字,让用户确认是否下载这个软件Y:(正在下载改软件)下载 N软件:打印取消下载,直接退出  

 

 循环语句

for语句

for 变量 in 单词表

do

语句

done

方法1:

 方法2:{}花括号中不能有变量  {1..10}I从1增加到10,中间只能有两个点  {10..1}从10减到1

方法3:

案例:输出1-10所有的奇数

 方法4:

案例: 打印九九乘法表

 while语句

while [表达式]

do

语句

done

打印九九乘法表

注意:

比较两个字符串时 =两边用空格隔开

赋值时,=两边不留空

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值