如何解决linux脚本中切换路径报错的问题

    今天遇到一个奇怪的问题,在写一键安装http服务脚本时,切换路径总是切换不过去,而且先是“No such file or directorycd: /app/httpd24”。通过上网搜索终于找到答案了。如下

1.sh SCRIPT 执行的脚本,SCRIPT可以没有执行权限,当前shell环境会启动一个子进程来执行此脚本,执行后返回到父进程的shell环境,在子进程中会进入到CD的目录,但是在父进程中环境并没有改变,也就是目录没有改变。

2../SCRIPT 执行的脚本与1类似,只不过t.sh要有可执行权限 。

3 . source SCRIPT 这样执行的脚本,SCRIPT可以没有执行权限,会在当前的shell环境下逐行读取脚本命令内容并执行,执行后就会跳转到CD的目录了 。执行时,会生效当前环境中的变量。

4.. SCRIPT 这样执行的脚本与3一直。

shell脚本实现远程多台Linux服务器的文件备份,并通过git clone一份新的文件,可以分为以下几个步骤: 1. 准备工作: - 确保所有目标服务器都安装了git。 - 确保本地机器可以无密码SSH到所有目标服务器上。 - 准备好用于git clone的仓库地址和权限。 2. 编写shell脚本: - 使用ssh执行远程服务器的备份命令,将文件传输到本地或者备份到NAS等集存储设备。 - 使用git命令进行clone操作,获取最新代码。 以下是一个简单的脚本示例: ```bash #!/bin/bash # 定义服务器列表 SERVERS=("user1@server1" "user2@server2" "user3@server3") # 定义远程备份路径 REMOTE_BACKUP_PATH="/path/to/remote/backup" # 定义本地git仓库路径 LOCAL_GIT_REPOSITORY="/path/to/local/git/repo" # 备份远程服务器文件 for SERVER in "${SERVERS[@]}" do scp -r $SERVER:$REMOTE_BACKUP_PATH/* $LOCAL_GIT_REPOSITORY/ # 这里使用scp命令从远程服务器拉取备份文件,也可以通过其他方式备份,比如rsync done # 进入本地git仓库目录 cd $LOCAL_GIT_REPOSITORY # 拉取最新代码 git fetch origin # 切换到需要的分支 git checkout master # 重置本地仓库到最新状态 git reset --hard origin/master # 检查clone是否成功无报错 if [ $? -eq 0 ]; then echo "Git clone and reset successful." else echo "Git clone or reset failed." exit 1 fi ``` 在实际使用,需要根据实际情况对脚本进行调整,比如具体的文件路径、服务器的用户名和地址、git仓库的路径和分支等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值