首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell编程基础

    注: 本文说的都是bash(Bourne Again Shell),是sh(Bourne Shell)的扩展 扩展名不会影响脚本执行,见名知意就行,一般情况下扩展名是sh Shell注释:以 #...=valuen 读取数组 ${数组名[下标]} 使用@符号可以获取数组中的所有元素 例:echo ${array_name[@]} 获取数组的长度 length=${#array_name[...@]} length=${#array_name[*]} Shell传递参数 请参考:菜鸟教程参数传递 在执行脚本的时候可以向脚本传递参数,脚本获取参数的格式为:$n Shell基本运算符 原生的bash...如果要将新内容添加在文件末尾,请使用>>操作符 输入重定向 command1 < file1 Here Document Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式...command document delimiter 注意:结尾的delimiter前后一定要顶格写,前面及后面都不能有任何字符 例: cat EOF 欢迎来到 菜鸟教程

    78720

    shell极简教程(二)

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。...break命令   break命令允许跳出所有循环(终止执行后面的所有循环)。   下面的例子中,脚本进入死循环直至用户输入数字大于5。...的内容作为输入。 Here Document   Here Document 目前没有统一的翻译,这里暂译为”嵌入文档“。...Here Document 是 Shell 中的一种特殊的重定向方式,它的基本的形式如下: command << delimiter document delimiter   它的作用是将两个 delimiter...EOF 3 $   也可以 将 Here Document 用在脚本中,例如: #!

    5.3K70

    Linux:编写 Shell 脚本时如何优雅地处理函数返回状态,多行文本和脚本路径

    三、使用 Heredoc 处理多行文本 在 Shell 脚本中,Heredoc("Here Document" 的缩写)是一种方便的方法,用于将多行字符串传递给命令或赋值给变量。...在 Shell 脚本中,Heredoc("Here Document" 的缩写)是一种方便的方法,用于将多行字符串传递给命令或赋值给变量。...EOF 是一个自定义的结束标记符,可以是任意你选择的标识符,常用的有 EOF、END 等。 EOF 中的 - 表示忽略行首的制表符,方便在脚本中缩进文本内容。 示例用法 1....EOF 在脚本中使用变量 你可以在 Heredoc 中使用脚本中的变量: bash #!/bin/bash name="Alice" cat EOF Hello, $name!...数组包含脚本的实际路径,即使是通过符号链接调用也能获取到实际位置。

    12510

    SHELL(bash)脚本编程三:重定向

    :x:0:0:root:/root:/bin/bash 7、Here Documents <<[-]word here-document delimiter 此处的word不能扩展,如果word...中有任何字符被引用(如前引用部分),delimiter是word去除引用后剩余的字符,并且here-document中的词都不会被shell解释。...如果word没有被引用,here-document中的词可以经历变量扩展、命令替换和数学扩展(和双引号的情况类似)。...如果重定向操作符是here-document中的开头tab字符将会被删除。 8、Here Strings <<<word 这里word的扩展结果会作为字符串被重定向。 脚本举例: #!.../bin/bash VAR='hello' #Here Documents cat EOF >file #文档内容不会被作为注释 不被引用时变量可以在文档内被扩展: $VAR world EOF cat

    1.7K30

    shell脚本中的数组常见使用方式

    数组定义: shell中数组的定义是使用 小括号来表示的,其中数组元素之间用空格作为分隔,比如: $ a=(1 2 3 abcd China) 2. 数组的访问: a....获取数组元素的个数: 在上述获取所有元素的前面加上一个# 就可以了,如下: $ echo ${#a[*]} 5 3. 数组的修改: a....追加元素到数组中: shadow@DESKTOP-SRI6HMB ~ $ echo ${a[*]} 1 2 b abcd China shadow@DESKTOP-SRI6HMB ~ $ a[${#a[...数组名称中含有shell变量: 当数组名称中含有shell变量的时候,此时随着shell变量的变化,那么引用的数组自然也就不同;此时可以通过如下的方式实现 变量的嵌套: 嵌套变量有两个符号,一个用来组合成完整的变量名称...a1,a2的值是不同的; $ i=1 $ eval echo '$'"{a$i[*]}" #此时 变量i=1, 所以显示的是数组变量a1的值; a b c $

    3.1K20

    如何从Bash脚本本身中获得其所在的目录

    问: 如何从Bash脚本本身中获得其所在的目录? 我想使用Bash脚本作为另一个应用程序的启动器。我想把工作目录改为Bash脚本所在的目录,以便我可以对该目录下的文件进行操作,像这样: $ ....但是在以相对路径的方式去执行脚本时,获取的目录信息是相对路径,不能满足其他需要获取绝对路径的场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本的完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录的绝对路径: #!.../(点-斜杠),以便在bash中运行它 shell脚本对编码和行尾符敏感吗

    34920

    Here Documents 结合expect的使用--(1)

    here documents的语法为: cmd << delimiter # << 可以替换为 <<- , delimiter 也可以加上单引号来使用; Here Document...起始部分的here documents 的每一行前面的tab 会被忽略,但是空格并不会被忽略;, 这样使用的目的是为了确保在shell脚本中,here documents...的内容看起来更美观; 如果把起始部分的delimiter 加上 单引号 引用起来,那么在here documents 部分的内容中,变量不会被解析;这种情况也是使用比较多的,比如通过cat命令来生成另一个脚本...,通常不希望把here documents content中的变量进行解析 如果没有使用单引号来 包括delimiter, 那么here documents content中的变量会被解析,比如位置参数...$1, 以及脚本中的其他变量等 使用expect 命令来解决自动交互问题是非常广泛的,expect有自己独特的语法,可以写expect脚本来解决复杂的交互问题;但是很多时候,我们会需要在shell中通过调用

    40620

    如何在Linux 系统上比较Bash脚本中的字符串?

    在Bash 脚本中比较字符串的需求相对普遍,可用于在继续执行脚本的下一部分之前检查某些条件。 字符串可以是任何字符序列。...在本教程中,我们将向您展示如何在Linux 系统上比较Bash 脚本中的字符串,我们将在一个简单的 if/else Bash 脚本的上下文中展示这一点,这样您就可以看到在开发脚本时测试这种情况是如何工作的...在本教程中,您将学习: 如何在 Bash 中比较字符串 比较字符串的 if/else Bash 脚本示例 Bash 脚本:字符串比较示例 例1 在 Bash 脚本中,您通常会将一个或两个字符串存储为变量...总结 在本教程中,我们了解了如何在 Bash 脚本中比较字符串,尤其是在 Bash 脚本的上下文中if/else。...当然,此功能可以扩展到更健壮的脚本,这些脚本可以读取用户的输入或使用 case 运算符等。这些都是在 Bash 中比较字符串所需的所有比较方法。

    4K00
    领券