首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

34920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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

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

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

    4K00

    从 SAR 报告中获取平均 CPU 利用率的 Bash 脚本

    大多数 Linux 管理员使用 SAR 报告监控系统性能,因为它会收集一周的性能数据。但是,你可以通过更改 /etc/sysconfig/sysstat 文件轻松地将其延长到四周。...如果超过 28,那么日志文件将放在多个目录中,每月一个。 要将覆盖期延长至 28 天,请对 /etc/sysconfig/sysstat 文件做以下更改。...在本文中,我们添加了三个 bash 脚本,它们可以帮助你在一个地方轻松查看每个数据文件的平均值。 这些脚本简单明了。出于测试目的,我们仅包括两个性能指标,即 CPU 和内存。...你可以修改脚本中的其他性能指标以满足你的需求。 从 SAR 报告中获取平均 CPU 利用率的 Bash 脚本 该 bash 脚本从每个数据文件中收集 CPU 平均值并将其显示在一个页面上。...2:从 SAR 报告中获取平均内存利用率的 Bash 脚本

    1.6K10

    read,source,mapfile命令与shell编程

    Bash 是一种相当强大的编程语言,也很容易上手。这里有一些鲜为人知但很有用的 bash 命令,它们将有助于使你编写的 shell 脚本更清晰、更易于维护。...在本教程中,我们将说明如何使用 read,mapfile,source 命令在 bash 脚本中的实际应用。我们举例一些常见的例子,希望能对有所帮助。...read 命令询问用户的输入 read 命令允许脚本接受用户输入,并将输入存储在变量中。 #!/usr/bin/env bash echo "What is your name?"...mapfile 命令将文件的行转换 Bash 数组 你可以使用mapfile命令读取文件的内容,然后将输出分配给 Bash 数组,只要在文件中遇到换行符,就会创建一个数组元素。...,你可能会注意到以下内容不起作用: #!

    69410

    linux: Bash中高效管理和操作数组

    在Unix/Linux系统的编程中,Bash脚本是自动化任务和管理系统的强大工具。数组作为基础的数据结构之一,在Bash中的应用广泛而灵活,尤其适合于处理一系列的数据元素。...本文将详细介绍如何在Bash中定义、操作、遍历数组,并通过示例解释如何有效地使用数组来简化日常脚本任务。 定义和初始化数组 在Bash中,数组的定义无需特定类型声明,可以直接通过赋值来创建。...数组的遍历 遍历数组是在脚本中处理数组数据的常见需求。...fi done 结论 Bash中的数组提供了一种灵活而强大的方式来组织和处理脚本中的数据。掌握如何有效地使用数组将大大提高Shell脚本的效率和可读性。...无论是简单的数据列表还是复杂的数据操作,数组都是Bash脚本中不可或缺的工具。

    23710

    嘘……这些bash命令鲜为人知,但是非常有用!

    Bash 中有一些强大的命令你可能不知道,即使你已经相当熟练地使用该语言,不过,所有这些命令都可以起到非常有用的作用,并且可以使您编写的 shell 脚本更简洁、更易于维护,并且比以前更强大。...Bash 数组,只要在文件中遇到新行,就会创建每个数组项。...例如,让我们创建一个名为的文件file.txt,其中包含以下文本: Line 1 Line 2 Line 3 Line 4 Line 5 您可以通过运行以下命令将此文件转换为Bash 数组,它将文件的内容分配给....png] 最后,您可能会注意到以下内容不起作用: #!...总结 就像这样,您在完成更强大和更有用的任务的道路上更进一步,同时能够留在 Bash 中。 您在 Bash 中是否经常使用其他命令?随时在下面的评论中留下任何一个。

    53300

    linux shell: Ksh、Csh与Bash的探索之旅

    在深入研究Linux和UNIX操作系统的过程中,我们经常会遇到各种各样的Shell环境。Shell是用户与操作系统交互的界面,它既是一个命令语言,也是一个程序设计语言。...数组变量:支持一维数组,便于处理一系列的数据。 算术运算:直接在Shell脚本中执行算术运算,无需调用外部程序。...Shell脚本:强大的脚本编程能力,包括函数、循环和条件判断。 它们之间的区别 虽然ksh、csh和bash都是功能强大的Shell,它们在设计哲学、语法和特性方面存在着显著的差异。...脚本编程:虽然三者都支持脚本编程,但bash和ksh提供的编程特性更加丰富,更容易编写复杂的脚本。...用户界面:bash和ksh提供了更多的命令行编辑功能,如历史命令搜索和命令行自动补全,而csh在这方面的功能较弱。 结论 选择哪个Shell取决于个人的需求和偏好。

    54610

    .sh 文件

    尽管我们在test.sh中声明使用 #!/bin/bash 来执行我们的文件,但此时使用sh而不是bash,则#!/bin/bash 已不起作用。...(2)使用bash test.sh 执行 该方法其实与 sh test.sh 的原理一样,只是使用了 /bin/bash 该种shell来执行我们的脚本文件。...所以,其实使用 dash test.sh' 也是可以的,只是取决于自己想使用那种shell来执行脚本,但sh、bash、dash三者有些许差别,对于部分关键字如 let,bash支持,而sh和dash并不支持.../test.sh 来执行脚本,该方式与 bash test.sh 是一样的 ,默认使用 bin/bash 来执行我们的脚本。 只有该种执行方式需要对文件添加执行权限,其他方式并不需要。...(4)使用source执行 使用source则也能够直接执行我们的脚本:   source test.sh (1)使用sh testsh执行 (2)使用bash testsh 执行 (3)使用点 执行

    2.8K10

    学习笔记0618----shell脚本(二)

    shell脚本 1. shell中的函数 1.1 案例一:打印参数案例 1.2 案例二:传递参数求和 1.3 案例三:输入网卡的名字,检查网卡的IP地址 2. shell中的数组 2.1 查看数组中的值...2.2 给数组某列赋值 2.3 删除某列的值 2.4 截取数组中某几列的值 2.5 数组中元素的替换 3....fun02.sh 此脚本中函数内参数的总数是: 5 1.2 案例二:传递参数求和 用于定义加法的函数,shell中定义的函数,必须放在上面 在shell里面需要优先定义函数,比如在调用这个函数的时候...2.1 查看数组中的值 ${a[@]} 查看数组中所有的值 ${a[*]} 查看数组中所有的值 ${a[0]} 查看数组中第0列的值,由于数组中是从0列开始的。...${a[*]/2/11} 把数组中是2的值替换为11。

    1.7K10

    shell编程01【执行方式】

    /bin/sh 第一行命令说明:   一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为: #!/bin/bash 或 #!...sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。.../'来执行 需要对文件授权,在当前父进程下的子进程中执行 2 bash(sh)来执行脚本 不需要授权,在当前父进程下的子进程中执行 3 source或( . )来执行 不需要授权,直接在父进程中执行...比如我们在脚本中声明的变量name1和name2,我们在父进程中就获取不到,如下 ? 可以看到,执行后再看脚本中两个变量,在父进程中不起作用!...注意   这种方式是直接在父进程中执行了,我们可以看到脚本中声明的变量信息 ? 总结   直接执行与用source命令执行的区别,前者只作用于子进程本身,后者则作用于整个父进程。

    55820

    shell脚本快速入门之-----shell脚本练习100例!!!

    /bin/bash #创建任意数字及长度的数组,根据客户的需求加入元素 i=0 #数组的下标 while true do read -p "是否输入元素(yes/no):" doing if...#出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能 echo "请根据下列提示选择您的出拳手势" echo "1.石头" echo "2.剪刀".../bin/bash 10、 100以内的数字求合 # 对 100 以内的所有正整数相加求和(1+2+3+4...+100) #seq 100 可以快速自动生成 100 个整数 sum=0 for i...) echo "数组中的元素:${num[*]}" } while : do read -p "请问您想要加入元素吗?...2、双层循环,外层控制把数组中每一个元素都取出来,内层循环采用当前元素和向后的数组元素比大小,最小的值和当前元素交换的方式 3、输入成绩这一块,因为数组已经有序了,只要拿输入元素和数组中元素相比,如果数组中元素大于当前输入元素

    22.4K712

    shell脚本快速入门之—–shell脚本练习100例!!!

    文章目录 1、循环ping192.168.110网段的所有主机 2、for批量创建用户 3、创建存放1-100奇数的数组里 创建任意数字及长度的数组,根据客户的需求加入元素 4、将一个数组中的所有不够...#出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能 echo "请根据下列提示选择您的出拳手势" echo "1.石头" echo "2.剪刀" echo.../bin/bash 10、 100以内的数字求合 # 对 100 以内的所有正整数相加求和(1+2+3+4...+100) #seq 100 可以快速自动生成 100 个整数 sum=0 for i in...$list) echo "数组中的元素:${num[*]}" } while : do read -p "请问您想要加入元素吗?...2、双层循环,外层控制把数组中每一个元素都取出来,内层循环采用当前元素和向后的数组元素比大小,最小的值和当前元素交换的方式 3、输入成绩这一块,因为数组已经有序了,只要拿输入元素和数组中元素相比,如果数组中元素大于当前输入元素

    1.5K40
    领券