首页
学习
活动
专区
工具
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之类操作系统图片脚本#!

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

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

    3.5K20

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

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

    2.2K20

    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.4K50

    在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 早期设计中,许多系统资源都被抽象为文件,以实现统一和一致接口处理,这样程序员可以使用相同系统调用来操作不同资源,如普通文件、目录、设备等。

    28510

    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.7K30

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

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

    58520

    通过JSch运行远程linux主机上shell脚本

    如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您支持是不竭创作动力! 运行远程主机上shell脚本 下面的例子是教给大家如何通过java程序,运行远程主机上shell脚本。...(不是一个黑客学习教程,而是使用用户名密码去执行有用户认证资格主机上shell脚本)。并且通过java程序获得shell脚本输出。...远程shell脚本 下面的代码放入一个文件:hello.sh,脚本内容很简单只是用来测试,回显输出“hello ” #!.../bin/sh echo "hello $1\n"; 然后把它放到远程主机/root目录下面,远程主机IP是1.1.1.1(当然真实测试时候不是这个IP,不能把真实IP写到这个文章里面,以免被攻击...并且在远程主机上,为这个脚本设置可执行权限,方法如下: $ chmod +x hello.sh 本地java程序 我们可以使用下面的代码,去远程linux 主机执行shell脚本,详细功能请看代码注释

    2.1K00
    领券