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

从脚本本身获取Bash脚本的源目录

从脚本本身获取Bash脚本的源目录可以使用source命令或者$0变量。

source命令可以让你在当前shell中执行一个脚本,这样脚本就可以访问当前shell中的所有变量和函数。你可以使用source命令来获取脚本的源目录,例如:

代码语言:bash
复制
source myscript.sh
source_dir=$(cd $(dirname $0) && pwd)

$0变量可以获取当前脚本的文件名。如果你想要获取脚本的源目录,可以使用dirname命令来获取脚本所在的目录,例如:

代码语言:bash
复制
source_dir=$(cd $(dirname $0) && pwd)

这样就可以获取到脚本的源目录,并将其存储在source_dir变量中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

21220

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

大多数 Linux 管理员使用 SAR 报告监控系统性能,因为它会收集一周性能数据。但是,你可以通过更改 /etc/sysconfig/sysstat 文件轻松地将其延长到四周。...在本文中,我们添加了三个 bash 脚本,它们可以帮助你在一个地方轻松查看每个数据文件平均值。 这些脚本简单明了。出于测试目的,我们仅包括两个性能指标,即 CPU 和内存。...你可以修改脚本其他性能指标以满足你需求。 SAR 报告中获取平均 CPU 利用率 Bash 脚本bash 脚本每个数据文件中收集 CPU 平均值并将其显示在一个页面上。...done echo "+----------------------------------------------------------------------------------+" 运行脚本后...2: SAR 报告中获取平均内存利用率 Bash 脚本

1.6K10

处理Apache日志Bash脚本

以往,我用是AWStats日志分析软件。它可以生成很详细报表,但是不太容易定制,得不到某些想要信息。所以,我就决定自己写一个Bash脚本,统计服务器日志,顺便温习一下脚本知识。...下面就是我日志分析脚本,虽然它还不是通用,但是我相信里面用到命令,足以满足一般日志分析需求,同时也是很好学习Bash实例。如果下面的每一个命令你都知道,我觉得可以堪称熟练使用Bash了。...二、为什么要用Bash 很多计算机语言,都可以用来完成这个任务。但是,如果只是简单日志分析,我觉得Bash脚本是最合适工具。...主要原因有两个:一是"开发快",Bash脚本是各种Linux命令组合,只要知道这些命令怎么用,就可以写脚本,基本上不用学习新语法,而且它不用编译,直接运行,可以边写边试,对开发非常友好。...(10)sort -rn > final.log.result 对awk脚本处理结果进行排序,sort默认使用第一个字段,参数r表示逆序,大往小排;参数n表示以数值形式排序,不以默认字典形式排序,

1.2K50

使用 Bash 脚本 SAR 报告中获取 CPU 和内存使用情况

在本文中,我们添加了三个 bash 脚本,它们可以帮助你在一个地方轻松查看每个数据文件平均值。...脚本 1: SAR 报告中获取平均 CPU 利用率 Bash 脚本bash 脚本每个数据文件中收集 CPU 平均值并将其显示在一个页面上。...由于是月末,它显示了 2019 年 8 月 28 天数据。 # vi /opt/scripts/sar-cpu-avg.sh#!...2: SAR 报告中获取平均内存利用率 Bash 脚本bash 脚本每个数据文件中收集内存平均值并将其显示在一个页面上。...3: SAR 报告中获取 CPU 和内存平均利用率 Bash 脚本bash 脚本每个数据文件中收集 CPU 和内存平均值并将其显示在一个页面上。

1.9K30

bash shell:获取当前脚本绝对路径(pwdreadlink)

https://blog.csdn.net/10km/article/details/51906821 有时候,我们需要知道当前执行输出shell脚本所在绝对路径,可以用dirname...下面是dirname命令行说明: ? 从上面的描述可知道,直接dirname返回未必是绝对路径,取决于提供给dirname参数是否是绝对路径。...所以下面这样代码中SHELL_FOLDER中不一定是绝对路径 SHELL_FOLDER=$(dirname "$0") 需要用cd和pwd命令配合获取脚本所在绝对路径,正确写法是这样, SHELL_FOLDER...=$(cd "$(dirname "$0")";pwd) 如果你觉得上面的写法比较麻烦,还有一个方式获取脚本绝对路径,就是借助readlink命令,下面是readlink命令行说明: ?...所以用readlink命令我们可以直接获取$0参数全路径文件名,然后再用dirname获取其所在绝对路径: SHELL_FOLDER=$(dirname $(readlink -f "$0")) 参考

8.4K30

编写快速安全Bash脚本建议

我们会包含: 一些bash基础知识(“你怎么写一个for循环”) 杂项事宜(“总是引用你bash变量”) bash脚本安全提示(“总是使用set -u”) 如果你编写shell脚本,并且你没有阅读这篇文章中其他任何内容...使用它来使您shell脚本更好! 我们会像讨论编程语言一样讨论bash,因为,怎么说呢,它就是。 这篇文章目标不是bash编程详解。我不会在bash中做复杂编程,也真的不计划学习如何去做。...有个很酷事情是你可以遍历另一个命令输出。seq 1 10 将数字1到10(每行一个)打印,这个for循环只是提取该输出并遍历它。我就经常用这种方法。...看看这个看似合理 shell 脚本: X="i am awesome" Y="i are awesome" if [ $X = $Y ]; then echo awesome fi 如果你尝试运行这个脚本...总是引用你 bash 变量,你会更快乐。 返回代码, &&, 和 `|| 每个 Unix 程序都有一个“返回代码”,它是一个0到127整数。0表示成功,其他都意味着失败。

1.8K80

bash运行脚本几种方式 转

bash shell 脚本执行方法有多种,本文作一个总结,供大家学习参考。 假设我们编写好shell脚本文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。...方法一:切换到shell脚本所在目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello.sh ./意思是说在当前工作目录下执行hello.sh。.../,bash可能会响应找到不到hello.sh错误信息。因为目前工作目录(/data/shell)可能不在执行程序默认搜索路径之内,也就是说,不在环境变量PASH内容之中。...方法二:以绝对路径方式去执行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

2.2K10

详解bash脚本调试机制

以调试模式运行脚本 通过bash -x 方式可以在调试模式下运行整个脚本, bash会在在运行前打印出了每一行命令, 而且每行前面用+号表明命令嵌套层数. > bash -x debug.sh...如果脚本比较复杂, 我们可以通过使用环境变量PS4配合调试用内置变量用于输出更加详细信息: > export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]...我们也可以使用trapDEBUG关键字在解释执行每一行脚本之前执行指定命令或函数: trap 'echo "VARIABLE-TRACE> $variable = \"$variable\""' DEBUG...关键字用于在解释出现错误时执行预设操作, 例如打印出错命令: trap 'echo $BASH_COMMAND' ERR 但鉴于使用trap进行调试执行效率过低, 建议在较为复杂脚本中直接使用调试选项或者使用...* > ll * -rw-rw-r-- 1 remilia remilia 0 Mar 1 20:09 '*' 到此这篇关于详解bash脚本调试机制文章就介绍到这了,更多相关bash 脚本调试

1.3K31

基于Bash Shell一个审计脚本

二、网站日志分析 这个基本没变,懒得改了,详情可参考3年前写那篇文章。 如何编写自己Web日志分析脚本? ? 运行结果如下: ? ?...毕竟都2020年了,不会徒手写shell脚本攻城狮不是好运维~ 写个整体代码框架示例,可能看起来能更清楚些... #!...五、题外话 在kali中,可以将常用工具集中起来,配合bash shellfunction函数,来实现自动化执行,就不需要背命令了,无论什么工具,输个IP地址或者域名就可以直接使用了,只要你提前在function...-p获取用户输入内容,并将其保存在变量里,当然了,nmap 要用户输入地方,肯定是IP啦~ read -p “请输入要扫描IP地址:” num2 利用nmap -v -n $num2 获取目标端口信息...MS17-010,通过cmd2变量中获取内容进行匹配,如果两者相当,则执行接下来操作。

1.1K30

编写可靠 bash 脚本一些技巧

作者:astarsun,腾讯搜索工程师 写过很多 bash 脚本的人都知道,bash 坑不是一般多。其实 bash 本身并不是一个很严谨语言,但是很多时候也不得不用。...以下总结了一些编写可靠 bash 脚本小 tips。...bash 跟其它脚本语言最大不同点之一,应该就是遇到异常时继续运行下一条命令。这在很多时候会遇到意想不到问题。加上 -e ,会让 bash 在遇到一个命令失败时,立即退出。...-u :试图使用未定义变量,就立即退出。 如果在 bash 里使用一个未定义变量,默认是会展开成一个空串。...意外退出时杀掉所有子进程 我们脚本通常会启动好多子脚本和子进程,当父脚本意外退出时,子进程其实并不会退出,而是继续运行着。如果脚本是周期性运行,有可能发生一些意想不到问题。

1.2K21

Linux中高效编写Bash脚本10个技巧

本文中,我们将分享 10 个写出高效可靠 bash 脚本实用技巧,它们包括: 1、 脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型编程中一种推荐做法。...# TecMint 是浏览各类 Linux 文章最佳站点 2、 当运行失败时使脚本退出 有时即使某些命令运行失败,bash 可能继续去执行脚本,这样就影响到脚本其余部分(会最终导致逻辑错误)。...用下面的行方式在遇到命令失败时来退出脚本执行: # 如果命令运行失败让脚本退出执行 set -o errexit # 或 set -e 3、 当 Bash 用未声明变量时使脚本退出 Bash 也可能会使用能导致起逻辑错误未声明变量...command 来做代换 命令代换 是用这个命令输出结果取代命令本身。...本文到这就结束了,你是否有一些其他更好 bash 脚本编程经验想要分享?

1.6K50

Linux 中高效编写 Bash 脚本 10 个技巧

本文中,我们将分享 10 个写出高效可靠 bash 脚本实用技巧,它们包括: 1、 脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型编程中一种推荐做法。...# TecMint 是浏览各类 Linux 文章最佳站点 2、 当运行失败时使脚本退出 有时即使某些命令运行失败,bash 可能继续去执行脚本,这样就影响到脚本其余部分(会最终导致逻辑错误)。...用下面的行方式在遇到命令失败时来退出脚本执行: # 如果命令运行失败让脚本退出执行 set -o errexit # 或 set -e 3、 当 Bash 用未声明变量时使脚本退出 Bash 也可能会使用能导致起逻辑错误未声明变量...”fossmint.com” if [ "\$value1" = "\$value2" ] 7、 用\$(command)而不是老旧`command`来做代换 命令代换[2]是用这个命令输出结果取代命令本身...” perl “\$nikto_file” -h “\$1” 10、 总是对长脚本进行调试 如果你在写有数千行代码 bash 脚本,排错可能变成噩梦。

1.7K30

Redis-脚本-获取某个前缀key

1.背景 在平时维护中,经常会遇到要统计某个前缀key有多少,在请求比较多redis中,keys * 会直接导致阻塞。...可以采用scan方式进行增量迭代,查询使用pipeline减少交互,提高效率。...2.scan命令优缺点 优点: 提供键空间遍历操作,支持游标,复杂度O(1), 整体遍历一遍只需要O(N); 提供结果模式匹配; 支持一次返回数据条数设置,但仅仅是个hints,有时候返回会多;...弱状态,所有状态只需要客户端需要维护一个游标; 缺点: 无法提供完整快照遍历,也就是中间如果有数据修改,可能有些涉及改动数据遍历不到; 每次返回数据条数不一定,极度依赖内部实现; 返回数据可能有重复...,应用层必须能够处理重入逻辑; 3. python脚本实现 python中有一个封装函数scan_iter--查看所有元素--迭代器 脚本内容: #!

3.1K30
领券