当前位置: 首页 > article >正文

linux shell脚本学习(1):shell脚本基本概念与操作

1.什么是shell脚本

linux系统中,shell脚本或称之为bash shell程序,通常是由vim编辑,由linux命令、bash shell指令、逻辑控制语句、注释信息组成的可执行文件

*linux中常以.sh后缀作为shell脚本的后缀。linux系统中文件乃至脚本的后缀并没有实际意义,只是一种区分文件的方式,脚本的类型是由其使用的编程语言决定的

在windows中批处理脚本通常是以.bat结尾

2.bash解释器

用户通过敲入的命令需要先通过解释器,才能翻译成操作系统能理解的指令。

bash解释器就是linux系统中常见的一种解释器。

可以通过命令:cat /etc/shells来查看系统内的shell解释器

3.shebang

3.1什么是shebang

shebang指的是出现在shell脚本第一行的前2个字符#!,unix系统的程序会分析shebang后的内容,以作为解释器的指令,例如:

(1)#!/bin/sh,程序会调用bash解释器。/bin/sh是/bin/bash的软链接,所以写/bin/bash也可以。

(2)#!/usr/bin/python,程序会调用Python解释器。yum就是使用Python开发的

(3)#!/usr/bin/env,是一种在不同平台上都能找到解释器的写法

3.2使用shebang的注意事项

(1)如果脚本内未指定shebang,则默认用当前shell去解释脚本,即$SHELL。可以通过命令查看$SHELL:

(2)如果#!指定的解释器没有可执行权限,则会报错:bad interpreter:Permission denied

(3)如果#!指定的解释器不存在,则会报错:bad interpreter:No such file or directory

(4)如果#!指定的解释器不是可执行文件,那么该解释器会被忽略,转由当前shell去执行该脚本

(5)#!的解释器必须写成绝对路径

(6)如果使用bash xxx.sh这样的命令来执行脚本,那么shebang的指定将被忽略,优先使用命令中的解释器

4.实现一个简单脚本的流程

使用vim编辑一个脚本,内容如下:

(1)不使用绝对路径:

要想执行这个脚本,直接把hello.sh当作命令来用是不可以的,因为它不在$PATH中:

(2)使用绝对路径:

直接使用绝对路径,也会因为权限问题报错:

这个错误可以通过修改权限来解决:

首先来看一下脚本的权限,可以看到是缺少x(可执行)权限的

通过chmod命令赋予其x权限,便可以执行:

(3)直接指定bash解释器来执行

不添加x权限也可以正常执行(脚本要写绝对路径):

(4)source或.


http://www.kler.cn/a/380137.html

相关文章:

  • 力扣动态规划基础版(矩阵型)
  • 密码学知识点整理一:密码学概论
  • Python实现FTP服务器:从入门到实践
  • 数据结构-自定义单链表
  • (七)JavaWeb后端开发——Maven
  • 基于Matlab 模拟停车位管理系统【源码 GUI】
  • 递归的相关知识(Java)全面版
  • JavaEE初阶---网络原理之TCP篇(二)
  • [VUE]框架网页开发1 本地开发环境安装
  • 北斗有源终端|智能5G单北斗终端|单兵|单北斗|手持机
  • LINUX_Ubuntu终端安装tools的命令
  • 详解Rust标准库:HashMap
  • k8s和docker常用命令笔记
  • 设计模式小结一策略(strategy)模式
  • 【测试工具】Fastbot 客户端稳定性测试
  • (微服务)服务治理:几种开源限流算法库/应用软件介绍和使用
  • 【数据结构】插入排序和希尔排序
  • PropTypes 和 TypeScript 在 React 中的比较
  • 深度学习每周学习总结J4(ResDenseNet 算法探索实践 - 鸟类识别)
  • 欠定方程有多个真正解,超定方程可能无解所以有最小二乘解
  • 鸿蒙HarmonyOS开发:给应用添加基础类型通知和进度条类型通知(API 12)
  • SpringBoot技术:打造新闻稿件管理平台
  • Timing修复的几种方法之setup
  • Django--models.py
  • 24/11/4 算法笔记 蛇形卷积
  • 杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录