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

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

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

28620

Bash Shell 单引号和双引号区别

引号是 Linux shell “特殊功能”,它可能会让人感到困惑,特别是如果您不熟悉 Linux 命令和 shell 脚本。 我将解释不同类型引号字符及其在 shell 脚本用法。...1.单引号 Shell 单引号会忽略其中所有类型特殊字符,单引号之间所有内容都被视为一个元素。 让我们举个例子,这是一个示例文本文件,其中包含 90 年代一些板球运动员。...3.反斜杠 反斜杠就像在单个字符周围加上单引号。反斜杠“转义”它之前放置字符。 这意味着反斜杠后面的字符将失去其特殊含义(如果有)。...双引号内反斜杠 反斜杠是与美元符号和反引号一起保持其特殊含义三个特殊字符之一。 这样,您可以使用反斜杠来转义美元符号、双引号和双引号反引号特殊含义。...以下面的示例为例,其中$5被视为未声明变量,因此它没有值。这就是为什么echo 命令输出忽略它原因。

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

bash运行脚本几种方式 转

bash shell 脚本执行方法有多种,本文作一个总结,供大家学习参考。 假设我们编写好shell脚本文件名为hello.sh,文件位置在/data/shell目录并已有执行权限。...方法二:以绝对路径方式去执行bash shell脚本: /data/shell/hello.sh 方法三:直接使用bash 或sh 来执行bash shell脚本: cd /data/shell bash...方法四:在当前shell环境执行bash shell脚本: cd /data/shell . hello.sh 或 cd /data/shell source hello.sh 前三种方法执行shell...shell脚本执行完后子shell环境随即关闭,然后又回到父shell。而方法四则是在当前shell执行。 假设shell脚本文件为hello.sh 放在/root目录下。...也可以让shell脚本在现行shell执行: 4.现行shell执行 代码如下: [root@localhost ~]# . hello.sh hello guys!

2.3K10

Bash命令展开单引号变量?

问题 我想从一个 bash 脚本运行一个包含单引号单引号内有其他命令和一个变量命令。 例如:repo forall -c '.......$variable' 在这种格式,美元符号 $ 被转义,变量没有被展开。 我尝试了以下几种变化形式,但它们都被拒绝了: repo forall -c '...."...$variable "'" 如果我将变量值直接替换进去,命令就能正常执行。 请告诉我哪里出了错。 回答 在单引号内,所有内容都会被原样保留,无一例外。...正如你所能验证,上面每一行对 shell 而言都是一个单独单词。引号(根据具体情况使用单引号或双引号)并非用来分隔单词,而是用于禁用对多种特殊字符解释,比如空格、$、;等。...通常情况下,可以在命令设置占位符,并将命令与变量一起提供,以便调用者能从调用参数列表接收它们 例如,以下做法非常不安全。

8710

详解bash脚本调试机制

以调试模式运行脚本 通过bash -x 方式可以在调试模式下运行整个脚本, bash会在在运行前打印出了每一行命令, 而且每行前面用+号表明命令嵌套层数. > bash -x debug.sh...() { func1 } func3 () { func2 } func3 caller 0 # 必须在函数调用 否则无输出 exit 0 运行脚本可以得到以下输出: Level0...set -x set -o xtrace 命令行首打印+,执行出错会打印详细信息 调试用参数可以在运行动态叠加或删除: > set -v > date date Fri 28 Feb 2020...:55:37 PM CST > set +vx # 取消参数 set +vx 通过使用-f选项可以显著减少脚本转义字符: > ls ?...* > ll * -rw-rw-r-- 1 remilia remilia 0 Mar 1 20:09 '*' 到此这篇关于详解bash脚本调试机制文章就介绍到这了,更多相关bash 脚本调试

1.3K31

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

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

1.6K10

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

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

3.9K00

Bash如何字符串删除固定前缀后缀

更多好文请关注↑ 问: 我想从字符串删除前缀/后缀。例如,给定: string="hello-world" prefix="hell" suffix="ld" 如何获得以下结果?...如果模式与 parameter 扩展后开始部分匹配,则扩展结果是 parameter 扩展后删除最短匹配模式(一个 # 情况)或最长匹配模式(## 情况)值 ${parameter...如果模式与 parameter 扩展后末尾部分匹配,则扩展结果是 parameter 扩展后删除最短匹配模式(一个 % 情况)或最长匹配模式(%% 情况)值。...https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion 相关阅读: 在bash:-(冒号破折号)用法...在Bash如何将字符串转换为小写 在shell编程$(cmd) 和 `cmd` 之间有什么区别 如何Bash变量删除空白字符 更多好文请关注↓

35210

如何理解Power Query“#”转义字符?

字符区间 16进制编码区间 0..9 0031-0039 A..Z 0041-005A a..z 0061-007A 一..龥 4E00-9FA5 在Power Query,使用List生成列表,必须是升序...例如我们需要日语片假名,韩语字符,特殊符号等都可以进行查找,查找到后就可以把对应16位进制编号记下,以后就可以方便转义了。...了解了Unicode编码,那我们看下,在Power Query如何使用转义字符"#"进行转换。 例1:通过"#"直接进行16进制Unicode编码转义。...="abc#(lf)abc",其结果就是把lf转义成了换行。在进行Unicode编码转义时,必须用""在最外面,转义编码在()内即可。当然如果直接转义就不需要了。 ?...例2:通过#转义含有特殊字符字段名。 =[#"a b"=1] ? = [#"a&b"=1] ? 例3:通过转义符直接转义日期格式并进行计算。

2.9K10

如何写出安全、基本功能完善Bash脚本

Bash就像继承了shell衣钵一样,在每台linux上都可以看到他身影,这可是大多数后端程序运行环境,因此当你需要编写服务器应用程序启动、CI/CD步骤或集成测试用脚本Bash就在那里等着你...通常,我们脚本在相对于脚本位置路径上运行,复制文件并执行命令,假设脚本目录也是一个工作目录。是的,只要我们目录执行脚本。...因此,如果脚本同一目录读取某个文件或执行另一个程序,请按如下方式调用: cat "$script_dir/my_file" 同时,脚本不会更改工作目录位置。...如果脚本其他目录执行,并且用户提供了指向某个文件相对路径,我们仍然可以读取它。...显然,它不能在缺少Bash环境工作,比如alpinellinux。 Further reading 在用Bash或其他更好语言创建CLI脚本时,有一些通用规则。

54530

如何使用 Jenkins 脚本化流水线(Pipeline)

在这篇简单教程,你将会学习到 Jenkins 流水线即代码,以及如何开发流水线脚本指导。 Jenkins 是一个开源持续集成服务器,它可以提供持续执行自动化构建和测试能力。... Jenkins 2.0版本开始,流水线功能变得开箱即用,不需要特殊配置。另外一个改进地方是,流水线可以被当作代码,使你开发出来脚本可以利用版本管理工具控制它。...更多有关在 Jenkins 中使用 JMeter 信息,可以在持续集成入门博文中找到:如何在 Jenkin 运行 JMeter。...同时,文章还介绍了如何利用 Jenkins2.0 流水线来运行 JMeter 测试,并在 Github 中提供了例子。...在这篇博客,我们已经大概过了一次 Jenkins 流水线即代码。我们还有如何开发流水线脚本高级内容教程。而完整文档则需要查看 Jenkins 官方文档。

8.5K70

如何利用Bash脚本监控Linux内存使用情况

如果你只有很少系统并且想要监视它们,那么编写一个小 shell 脚本可以使你任务变得非常简单。 在本教程,我们添加了两个 shell 脚本来监视 Linux 系统上内存利用率。...方法-1:用 Linux Bash 脚本监视内存利用率并发送电子邮件 如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。 这是个非常简单直接单行脚本。...* 如何使用 shell 脚本自动执行日常活动? 方法-2:用 Linux Bash 脚本监视内存利用率并发送电子邮件 如果要在邮件警报获取有关内存利用率更多信息。...使用以下脚本,其中包括基于 top 命令和 ps 命令最高内存利用率和进程详细信息。 这将立即让你了解系统运行情况。 当你系统达到内存利用率 “80%” 时,它将触发一封电子邮件。...# crontab -e */5 * * * * /bin/bash /opt/scripts/memory-alert.sh 注意:由于脚本计划每 5 分钟运行一次,因此你将在最多 5 分钟后收到电子邮件提醒

2.1K10

Jenkins Pipeline 脚本在美团餐饮 SaaS 实践

把Pipeline当代码写 既然存在缺陷,我们就要找更好方式,其实Jenkins提供了一个更优雅管理Pipeline脚本方式,在配置项目Pipeline时候,选择Pipeline script...这样,Jenkins在启动job时候,首先会去仓库里面拉取脚本,然后再运行这个脚本。在脚本里面,我们规定构建方式和流程,就会按部就班地执行。...){//git仓库检出代码 git branch: "${BRANCH}",credentialsId: 'xxxxx-xxxx-xxxx-xxxx-xxxxxxx', url...,一个或者几个人维护构建中一个stage; 把构建过程stage做成普通自由风格软件项目的job,把它们作为基础服务,在Pipeline调用这些基础服务等。...当然,Pipeline也存在一些弊端,比如: 语法不够友好,但好在Jenkins提供了一个比较强大帮助工具(Pipeline Syntax); 代码测试繁琐,没有本地运行环境,每次测试都需要提交运行一个

1.2K20

JenkinsPipeline脚本在美团餐饮SaaS实践

Jenkins构建也有很多种方式,现在使用比较多是自由风格软件项目(Jenkins构建一种方式,会结合SCM和构建系统来构建你项目,甚至可以构建软件以外系统)方式。...把Pipeline当代码写 既然存在缺陷,我们就要找更好方式,其实Jenkins提供了一个更优雅管理Pipeline脚本方式,在配置项目Pipeline时候,选择Pipeline script...这样,Jenkins在启动job时候,首先会去仓库里面拉取脚本,然后再运行这个脚本。在脚本里面,我们规定构建方式和流程,就会按部就班地执行。...){//git仓库检出代码 git branch: "${BRANCH}",credentialsId: 'xxxxx-xxxx-xxxx-xxxx-xxxxxxx', url...当然,Pipeline也存在一些弊端,比如: 语法不够友好,但好在Jenkins提供了一个比较强大帮助工具(Pipeline Syntax); 代码测试繁琐,没有本地运行环境,每次测试都需要提交运行一个

1.5K20

shell语法

/bin/bash指名bash脚本解释器 运行方式: 作为可执行文件: chmod +x test.sh使脚本具有可执行权限 ....,也可以使用双引号,也可以不使用引号 单引号和双引号区别(不加引号和双引号相同) 单引号内容会原样输出,不会执行,不会取变量(即不会转义),即没有使用&符号取值 双引号内容可以执行,可以取变量...(不包括文件名) $*:由所有参数构成用空格隔开字符串,整体为字符串用双引号括起来 $@:每个参数分别用双引号括起来字符串(@和*都是取所有的意思) $$:脚本当前运行进程ID $?...,发现表达式运行错误时,可以试试转义 包含空格和其他特殊字符字符串要用引号括起来 expr会在stdout输出结果,如果结果为真,stdout为1,否则为0 expr也有exit code返回值...\n(此时无需-e进行转义) 文件逻辑运算符 |与&单与和单或是expr(必须在expr中使用) 而||与&&双与和双或是bash自带,可以直接在bash中使用 也带有短路特性 表达式exit

10810

shell脚本中一些注意事项

1.2 sh、bash命令用法: sh FileName或 bash FileName 作用:打开一个子 shell 来读取并执行 FileName 命令。...注:运行一个shell脚本时会启动另一个命令解释器。 1.3 ./命令用法: ..../file.sh ,如果不加的话,linux 默认会PATH 里去找该 file.sh。 注:运行一个 shell 脚本时会启动另一个命令解释器。 Q: 单引号和双引号区别?...单引号字符串限制: 单引号任何字符都会原样输出,单引号字符串变量是无效单引号字串不能出现单独一个单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。...以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行文件名: ? 输出结果如下: ? 可以发现,单引号内容会直接原样输出来,如果想实现拼接功能,需要我们使用单引号引起来。

1.1K20

解决bash syntax error near unexpected token from

本篇博客文章将介绍如何解决这个错误。原因分析该错误通常是因为在Bash脚本存在语法错误或错误引号使用方式导致。以下是一些常见可能原因:在脚本中使用了未正确闭合引号。...比如,双引号或单引号没有正确成对出现。bashCopy codeecho "Hello World!在上述示例,双引号没有正确闭合,导致语法错误。 2. 在脚本中使用了非法字符或符号。...在上述示例,使用了反斜杠来转义​​$​​符号,避免了语法错误。 3. 检查脚本是否有其他语法错误。这可以通过编写和运行一个简单测试脚本来找出。bashCopy code#!...Bash脚本是一种直接在命令行环境下运行脚本,它不需要编译或链接过程,可以通过命令行或脚本文件直接运行。...运行Bash脚本几种方式:在命令行直接输入脚本内容并执行。bashCopy code$ bash -c 'echo "Hello, World!"'将脚本写入一个文件,然后通过命令行执行该文件。

55330

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券