Liunx高级程序设计-Shell

本文介绍了Shell脚本的基础概念,包括Shell作为应用程序和设计语言的角色,以及bash解析器的使用。详细讲解了变量的分类、定义、测试、操作和控制语句(如if、case、for、while),以及函数的定义和调用。
摘要由CSDN通过智能技术生成

引入

完成以下任务 :
判断用户家目录下( ~ )下面有没有一个叫 test 的文件夹
如果没有,提示按 y 创建并进入此文件夹,按 n 退出
如果有,直接进入,提示请输入一个字符串,并按此字符串创建一个文件,如果此
文件已存在,提示重新输入,重复三次自动退出,不存在创建完毕,退出
简单的进行命令堆积无法完成以上任务,这就需要学习相应的 shell 脚本语法规则了
简介
Shell 的概念
是一种应用程序 , 也是一种设计语言
作为应用程序
系统分为 , 硬件层 ,Liunx 系统层 ,Shell, 应用程序层 , 如图 1
此时 Shell 的作用是沟通应用程序层与 Liunx 系统层 , Shell 解析器
Shell 解析器常用的有三种 , 分别是 sh,ash,bash, 一般情况下使用 bash
可以使用 echo $SHELL 查看使用的那种解析器 , 如图 2
作为设计语言
概念 :shell 脚本语言 , 不需要编译 , 直接解析执行 ( 批处理 )
优点 : 简化我们对系统的管理与应用程序的部署过程
名词 :
批处理 : 大量的循环的数据处理 , 如扫描当前根目录下是否存在 a.txt, 此时需要在
当前根目录所有文件夹中一一寻找
脚本语言 : 我们只需使用任意文本编辑器,按照语法编写相应程序 , 增加可执行权
, 即可在安装 shell 命令解释器的环境下执行的代码语言 , python,html,css
Shell 脚本的分类
系统调用
这类脚本无需用户调用,系统会在合适的时候调用,如: /etc/profile
~/.bashrc
/etc/profile:
此文件为系统的每个用户设置环境信息 , 当用户第一次登录时 , 该文件被执行 ,
系统的公共环境变量在这里设置
开机自启动的程序,一般也在这里设置
注意 : 如果在该文件中配置 , 需要从新登录用户才可生效
~/.bashrc
用户自己的家目录中的 .bashrc
登录时会自动调用,打开任意终端时也会自动调用
这个文件一般设置与个人用户有关的环境变量,如交叉编译器的路径等等
/etc/profile ~/.bashrc 的关系 , 如下图
用户编写
需要手动调用
注意 : 无论是系统调用的还是需要我们自己调用的,其语法规则都一样

第一个Shell脚本

1, 创建 Hello.sh 文件
2, 编写以下代码
#!/bin/bash
echo "Hello Shall"
3, 执行 hello.sh 文件
./Hello.sh
说明:
#! 用来声明脚本由什么 shell 解释,否则使用默认 shell
# 表示注释本行
注意:
创建文件时 :
如果是在 windows 中创建编写的 Shell 脚本文件 , 拖拽到 Liunx 下无法运行 , 因为
Windows Liunx \ 表示的含义不同 , 所以导致程序无法被识别
解决方案 1:
Liunx 中使用 vim 编辑器 , 在最后一行模式输入 set ff=unix
解决方案 2:
Linux 中安装 dos2unix, 使用 dos2unix 转换
步骤 :
1, 命令行输入 :sudo apt-age install dos2unix
2, 命令行输入 :dos2unix 文件地址
编写代码 :
# 注释
#! 用来声明脚本由什么 shell 解释,否则使用默认 shell
echo 输出
执行脚本方式 :
方式 1: 使用 sh bash
sh 文件路径
bash 文件路径
方式 2:./ 文件路径
需要可执行权限 , 添加权限命令 :chmod +x 文件路径
+ 增加权限
- 减少权限
x: 可执行
以上方式会开启子 Shell
:
chmod +x hishell.sh
方式 3:source 文件名或 . 文件名
source 文件路径 借鉴 cshell
. 文件路径 借鉴 bash
以上方式不会开启子 Shell
开启子 Shell 与不开启的区别
开启子 Shell , Shell 中的变量父 Shell 不可见
区别 :
./ bash 执行过程基本一致,
bash 明确指定 bash 解释器去执行脚本,脚本中
  • 35
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHANGα

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值