首页 > 系统相关 >Shell脚本编程基础(一)

Shell脚本编程基础(一)

时间:2024-09-22 10:23:37浏览次数:10  
标签:脚本 输出 Shell 示例 编程 echo sh Linux

Linux Shell 编程入门

在 Linux 系统中,Shell 是一个重要的工具,它充当应用程序与计算机内核的交互桥梁。本文将介绍 Shell 编程的一些基本知识,并通过实例帮助你更好地理解和使用它。

什么是 Shell?

Shell 是一种解释型的编程语言,通过解释器将代码翻译成计算机可理解的语言。在 Linux 中,主要的解析器有两种:shbash。在 CentOS 系统中,默认的解析器是 bash

示例:输出 “Hello, World!”

我们通过一个简单的实例来了解如何编写和执行 Shell 脚本。

  1. 新建一个文件

    创建一个新的脚本文件,例如 helloworld.sh

  2. 编辑文件

    打开文件并添加以下内容:

    #!/bin/bash
    echo "Hello, World!"
    
  3. 执行脚本文件

    执行脚本文件有两种方式:

    • 使用 bash 命令(相对):

      bash helloworld.sh
      
    • 增加可执行权限并直接执行(相对):

      chmod +x helloworld.sh
      ./helloworld.sh
      
    • 使用 bash 命令(绝对):

      bash /home/username/scripts/helloworld.sh
      
    • 增加可执行权限并直接执行(绝对):

      chmod +x helloworld.sh
      /home/username/scripts/helloworld.sh
      
  • 根据最小权限原则,只授予文件所需的权限,一般只需要增加执行权限,所以使用 a+x而不是777

输出示例

  1. 普通字符串

    echo "It is Linux.CN"
    

    输出:

    It is Linux.CN
    
  2. 转义字符串

    echo "\"It is Linux.CN\""
    

    输出:

    "It is Linux.CN"
    
  3. 变量

    name="Arch"
    echo "$name is the best Linux Distro!"
    

    输出:

    Arch is the best Linux Distro!
    
  4. 换行符

    echo -e "show me your code!\nThis is the second line."
    

    输出:

    show me your code!
    This is the second line.
    
  5. 命令执行结果

    echo $(date)
    echo $(pwd)
    

    输出:

    • 第一个 echo $(date) 会输出当前系统的日期和时间,例如:

      Wed Sep 18 12:34:56 UTC 2024
      
    • 第二个 echo $(pwd) 会输出当前的工作目录路径,例如:

      /home/user
      

变量

变量是用于存储数据的内存区域。自定义变量的示例如下:

greeting="Hello"
echo $greeting

注意事项

  • 变量名可以是字母、数字和下划线的组合,但不能以数字开头。

  • 等号两侧不能有空格。

  • 变量默认为字符串,不能直接数字运算。

  • 如果值中有空格,必须用单引号 ' 或双引号 " 引起来。

  • 环境变量通常使用大写,如 PATHHOME 等,为了与用户自定义变量区分开来。

  • 使用 unset 撤销变量:

    unset greeting
    
  • 使用 readonly 创建静态变量,不能修改,不能撤销:

    readonly pi=3.14
    

特殊变量

  • $n:表示执行脚本时传递给脚本的第 n 个参数。
  • $#:表示传递给脚本的参数个数。
  • $*$@:获取所有参数。
  • 使用 "$*" 时,加双引号时,参数被视为一个整体的字符串。
  • 使用 "$@" 时,参数被视为独立的元素,在需要单独处理每个参数时使用。
  • $?:表示上一条命令是否成功执行,成功返回 0。

示例说明

假设有一个脚本 example.sh,并以如下方式运行:

./example.sh arg1 arg2 arg3
  1. $n:

    • $1 的值是 arg1
    • $2 的值是 arg2
    • $3 的值是 arg3
  2. $#:

    • 表示传递给脚本的参数个数。在这个例子中,$# 的值是 3
  3. $*:

    • 将所有参数作为一个整体字符串。例如:arg1 arg2 arg3
    • 示例代码:
      echo "$*"
      
    • 输出为:
      arg1 arg2 arg3
      
  4. $@:

    • 将所有参数视为独立的元素。
    • 示例代码:
      for arg in "$@"; do
        echo "$arg"
      done
      
    • 输出为:
      arg1
      arg2
      arg3
      
  5. $?:

    • 表示上一条命令的退出状态码。成功执行返回 0
    • 示例代码:
      ls
      echo $?
      
    • 如果 ls 成功执行,输出为:
      0
      
    • 如果 ls 失败(例如目录不存在),输出为非 0 的错误代码。

通过以上内容和示例,可以开始基本的 Shell 编程,在 Linux 下实现自动化任务和系统管理。希望这篇文章对你有所帮助!

标签:脚本,输出,Shell,示例,编程,echo,sh,Linux
From: https://blog.csdn.net/m0_58076578/article/details/142327068

相关文章

  • 全网最全挂机掘金脚本合集,单机一天壹张+无压力
    摘要本文介绍了一款功能丰富的挂机型脚本软件,该软件支持多种平台的自动化操作项目概述当前市场上,挂机型脚本软件种类繁多,功能齐全。本软件集成了多种平台的自动化脚本,包括微信阅读、卷轴平台、广告掘金、自动养机、短视频挂机等。用户只需下载一款软件,即可享受多达十几......
  • 全网最全挂机掘金脚本合集,单机一天壹张+无压力
    摘要本文介绍了一款功能丰富的挂机型脚本软件,该软件支持多种平台的自动化操作项目概述当前市场上,挂机型脚本软件种类繁多,功能齐全。本软件集成了多种平台的自动化脚本,包括微信阅读、卷轴平台、广告掘金、自动养机、短视频挂机等。用户只需下载一款软件,即可享受多达十几......
  • 一款批量下载 B 站动态页图片的脚本
    在逛B站的时候,总能看到不少UP会发很多图片,此时一个一个保存非常麻烦,而且文件名都是随机的字符串,还得手工重命名。为此,特地搜索了下有没相关的浏览器插件或油猴脚本,还真给我找到一个。脚本地址:https://greasyfork.org/zh-CN/scripts/421885​‍‍安装后,重新刷新网页,即可......
  • 在 WordPress 中排队 CSS 和 JS 脚本以获得更好的性能
    wordpress是开源软件–用户可以按照自己的意愿安装、修改和分发它。由于每个人都可以访问源代码,数百万wordpress专家和开发人员可以创建工具和扩展并与公众分享。让我们看看如何将css和js文件加入到你的wordpress项目中。大多数新开发者都喜欢,里面“header.php”<ti......
  • 动态编程变得简单:带有 JavaScript 示例的初学者指南
    通过javascript中的动态编程释放高效解决问题的能力。介绍您想提高编程中解决问题的能力吗?动态规划(dp)是一种强大的技术,可以帮助您高效地解决复杂问题。本初学者指南将通过javascript示例向您介绍动态编程,使其易于掌握并应用于实际场景。您将学到什么:动态规划的基本概念......
  • CTF-PWN-ret2shellcode全解
    ##入门级shellcode在平时遇到题目时候我们第一步查看保护,然后再根据反汇编的程序进行判断程序能够用哪种攻击方法入门级的shellcode肯定就是简单的看,但是那种无限制且可以直接执行的就不给大家讲了,那种是非常非常简单的了,首先给大家看一个例题:源码:保护:有新手会问,开启了nx......
  • 【油猴脚本】00011 案例 Tampermonkey油猴脚本,动态渲染表格-实现页面动态-添加提取数
    前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......
  • Java中的泛型编程:深入理解类型参数与类型边界的使用
    Java中的泛型编程:深入理解类型参数与类型边界的使用大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,泛型编程是一种重要的特性,它允许我们在编写代码时使用类型参数,从而提高代码的可重用性和类型安全性。本文将深入探讨Java中的泛型,包括类型参......
  • 带你0到1之QT编程:十五、探索QSplitter和QDockWidget的简单应用技巧
    此为QT编程的第十五谈!关注我,带你快速学习QT编程的学习路线!每一篇的技术点都是很很重要!很重要!很重要!但不冗余!我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!码农不易,各位学者学到东西请点赞支持支持!开始部分:总:QSplitter提供的是一种灵活的可拖拉布局方式来管......
  • 单片机毕业论文 怎么写 STM32单片机毕业论文 单片机毕设设计论文怎么写 单片机编程 单
    单片机毕业论文怎么写引言单片机毕业论文怎么写?这个问题看似复杂,但只要掌握一些关键技巧,就能轻松应对。论文的本质无非是用一种结构化的方式展示你对单片机的理解、设计、实现和思考。接下来,我们用通俗幽默的方式,逐步解析如何撰写一篇优秀的单片机毕业论文。1.开题报告......