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

如何检测我运行shell脚本的当前目录?

在shell脚本中,可以使用$0变量获取当前脚本的名称。要检测当前运行shell脚本的目录,可以使用cd命令和$PWD变量。

代码语言:bash
复制
#!/bin/bash

# 获取当前脚本的名称
script_name=$(basename "$0")

# 检测当前目录
if [ -z "$PWD" ]; then
  echo "当前工作目录未定义"
else
  echo "当前工作目录为:$PWD"
fi

cd "$(dirname "$0")" # 如果脚本位于某个文件夹内,则进入该文件夹

这段代码首先获取当前脚本的名称,然后通过$PWD变量获取当前工作目录(如果工作目录未定义,则使用$0变量获取当前脚本的名称)。最后,使用cd命令将工作目录更改为脚本所在的目录。

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

相关·内容

检测当前环境有哪些MYSQL实例的SHELL脚本分享

在一个陌生的OS的时候, 可能需要判断当前环境是否有mysql实例, 并获取相关信息.在不登录mysql数据库的情况下, 可以获取到 启动账号,启动时间,运行时间,监听端口,数据库版本之类的信息....脚本比较简单, 我就直接上效果图了. 脚本见文末说明使用ps -ef 搜索相mysqld关键字即可, ps -ef 各字段含义如下UID:进程的执行用户身份,这通常是用户的登录名称。...每个进程在系统中的唯一标识。PPID:父进程 ID,即启动这个进程的进程的 PID。C:CPU利用率,是指该进程耗费的CPU使用时间百分比。STIME:进程启动到现在的运行时间。...TTY:该进程在哪个终端上运行,没有则显示为?。TIME:该进程实际使用 CPU 的时间。CMD:该进程正在执行的命令名称。...演示效果我只展示了启动账号,进程号, 监听端口和版本信息, 要其它信息自己加图片也支持suse之类的操作系统的图片脚本#!

26320
  • 如何在 Linux 中运行一个 Shell 脚本

    不要担心,我将使用示例来进行必要的解释,以便你能理解为什么在运行一个 shell 脚本时要使用给定的特定语法格式。...例如,我已安装了 zsh ,并使用它来运行相同的脚本: 使用 Zsh 来执行 Shell 脚本 方法 2:通过具体指定 shell 脚本的路径来执行脚本 另外一种运行一个 shell 脚本的方法是通过提供它的路径.../script.sh 如果你与你的脚本不在同一个目录中,你可以具体指定脚本的绝对路径或相对路径: 在其它的目录中运行 Shell 脚本 在脚本前的这个 ./ 是非常重要的(当你与脚本在同一个目录中)。...为什么当你在同一个目录下,却不能使用脚本名称?这是因为你的 Linux 系统会在 PATH 环境变量中指定的几个目录中查找可执行的文件来运行。...记得我提过 shell 只是一个程序,并且有 shell 程序的不同实现。 当你使用 #! /bin/bash 时,你是具体指定 bash 作为解释器来运行脚本。如果你不这样做,并且以 .

    3.5K20

    原 shell脚本中的逻辑判断,文件目录属

    shell脚本中的逻辑判断: 逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(=);...,切存在 【-d file 】判断是否是目录,且存在 【 -e file 】判断文件或目录是否存在 【 -r file 】判断文件是否可读 可写 可执行 = 类似 判断的不同写法:【 -f $f 】||.../lalala' if [ $n -lt 100 ] then echo "line num less than 100" fi # 如果/tmp/lalala文件为空,或者被删除的话,脚本就会运行出错...: 在网卡系统服务脚本中,如,/etc/init.d/iptables中就用到了case 在case中,可以在条件中使用“|”,表示或的意思 输入一个同学的分数,判断成绩是否及格,优秀。...exit 1 #“exit 1”表示非正常运行导致退出程序 #退出之后,echo $?会返回1值,表示程序退出是因为出错了,和查看上一条命令执行有无错误的时候是一样的。

    1.5K51

    怎么正经的实现shell脚本单例运行?

    假设你的一个脚本已经在运行了,如果避免再次被执行呢?也就是如何实现单例运行? 看起来可行的方法 一个非常简单的思路就是,新的脚本被执行时,先检测当前脚本是否有其他实例正在运行,如果有则直接退出。 #!...原因在于,shell脚本中一个命令执行相当于fork了一个进程执行,这里执行的是查找tesh.sh并grep的程序,另外还有一个就是当前运行的脚本程序,这样的方式自然就会出现每次都有两个了。...文件锁 实际上这种方法你已经在《如何让你的程序同时只有一个在运行》介绍过了,只不过之前是用于编写C/C++程序,而这里是用于shell脚本。...实际上这里面有几个点非常巧妙: kill -0 `cat \${LOCKFILE}` 这里用于检测该进程是否存在,避免进程不在了,但是锁文件还在,导致后面的脚本无法运行。...总结 单例运行本身思路是很简单的,就是探测当前是否有实例在运行,如果有,则退出,但是这里如何判断,却并不是那么容易。

    2.3K20

    shell脚本一键找出占用较大的目录

    当服务器磁盘告警的时候,为了找出占用空间较大的目录,通常使用du命令,类似如下:# 先从根目录开始找du -hc --max-depth=1 /然后找到大的目录后,再cd进去,再次执行 du -hc -...除了上面的这种人肉操作外,还可以使用下面的脚本# 找到占用磁盘空间比较大的目录# 用法: sh xx.sh /var 3# 参数1 目录名(必传参数)# 参数2 遍历的深度(不传则默认5层)#路径dir...=${1:-/}#目录深度depth=${2:-5}#排除非查找目录exclude_dir=$(df | grep -wv ${dir} | awk 'NR>1{print "--exclude="$6...""}')#du命令根据深度与目录计算echo "$(date +'%Y-%m-%d %H:%M:%S') 正在分析计算目录${dir}大小,深度为${depth}"echo "时间可能较长,请耐心等待...exclude_dir} ${dir} 2>/dev/null | awk '$1~/G$/{print$0}'echo "$(date +'%Y-%m-%d% H:%M:%S')分析计算结束"ps:上面的这个脚本来自网上

    10010

    在Bash shell脚本中如何检查一个目录是否存在

    问: 在 Bash shell 脚本中什么命令检查某个目录是否存在?...答: 要检查目录是否存在,请执行以下操作: if [ -d "$DIRECTORY" ]; then echo "$DIRECTORY does exist." fi 一行代码的形式则如下: [...如果不考虑符号链接到目录的情况,后续命令可能无法按预期工作,因为符号链接也会通过这个检查。...例如,运行以下代码: ln -s "$ACTUAL_DIR" "$SYMLINK" if [ -d "$SYMLINK" ]; then rmdir "$SYMLINK" fi 将产生错误消息...在 Unix 的早期设计中,许多系统资源都被抽象为文件,以实现统一和一致的接口处理,这样程序员可以使用相同的系统调用来操作不同的资源,如普通文件、目录、设备等。

    37610

    shell脚本运行jar包获取参数_linux加载一个目录下的所有jar包

    大家好,又见面了,我是你们的朋友全栈君。 当使用SpringBoot框架时,他自己集成了tomcat。在启动jar包时,经常需要复制一大段命令,尤其是在项目目录发生改变的时候,实在繁琐。...所以可以使用shell脚本来启动、关闭和重启Java项目。 创建一个shell脚本 vim 脚本名.sh 脚本内容: #!.../bin/bash #这里替换为你自己的执行程序的名称 JAR_NAME=jar包名称 #lib目录 LOAD_PATH="-Dloader.path=/home/local/lib/" #项目配置文件....sh [start|stop|restart]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $JAR_NAME|grep -v grep...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.8K20

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

    https://blog.csdn.net/10km/article/details/51906821 有时候,我们需要知道当前执行的输出shell脚本的所在绝对路径,可以用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.9K30

    我的shell脚本实战-编写一个系统发布脚本

    于是我决定使用shell写一个自动发布的脚本,既可以更熟悉发布流程,也可以学习shell语法。...因为有测试环境和正式环境,我在执行脚本的时候会在后面带一个参数pro或test,代表发布到不同的环境。 首先我们在两个环境各自相关的地址: 当输入的变量参数为test时,走test的路径。...最后我们启动应用主机的程序即可。 启动系统之前需要将原系统停掉,系统启动脚本在各自的应用系统中。 上图为启应用动脚本这里我们指定了启动的运行环境。...--spring.profiles.active=dev 并且可以退出控制台,实现后台运行。 nohup xxx >/dev/null 2>&1 & 以上一个简单的发布脚本就实现了。...这里是后端的实现,前端也可以用同样的脚本,只要将编译的命令改成前端的编译命令即可。 以上就是用shell脚本模拟了Jinkens的发布过程了,至此有没有发现shell也很简单呢。

    60920
    领券