简单的shell脚本:根据传参(个数不定)找到路径下文件进行备份,然后重启

#!/bin/sh

echo "传入参数:$*"

#分隔符
symbol=/
#替换文件路径
replacepath=/home/replacefile
#日期
date=`date "+%Y%m&d"`
#重启脚本路径
restartshell=/home/wasadmin/sbin

#运行代码
fun run() {
	#全路径
	fullpath=`find /opt -name $1`
	echo“全路径: $fullpath"
	if [ ! -n "$fullpath" ] ;then
		echo "退出执行:/opt目录下未找到文件"
		return from main
	fi

	#路径
	absolutepath=${fullpath%$symbol*}
	#文件名
	filename=${fullpath##*$symbol}

	#数量
	count=`find /opt -name $filename |wc- l`
	echo "/opt目录下共有$count个$filename"
	if [ $count -ne 1 ] ; then
		echo "退出执行:文件数量不符"
		return from main
	fi

	#备份文件
	cp $fullpath $absolutepath/$filename$date
	echo '备份文件完成'

	#拷贝文件n
	cp $replacepath/$filename $fullpath
	echo '替换文件完成'

}

for i in "$@” ;do
	printf "\n"
	echo "########参数$i"
	fun run $i
	printf "\n"
done

#重启脚本
read -t 60 -n 1 -p "是否需要重启?[y/n]" flag
if [ "$flag" = "y" ] ; then
	echo "开始重启”
	$restartshell/restartPayWebServer.sh
	echo "重启完成"
else
	echo "退出脚本"
	exit
fi


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Java代码执行shell脚本文件传参数据的示例: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ExecuteShellScript { public static void main(String[] args) { String script = "/path/to/script.sh"; // 设置脚本文件路径 String arg1 = "argument1"; // 设置第一个参数值 String arg2 = "argument2"; // 设置第二个参数值 try { // 构造命令数组 String[] command = {"/bin/bash", script, arg1, arg2}; // 执行命令 Process process = Runtime.getRuntime().exec(command); // 获取命令输出 BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待命令执行完成 int exitCode = process.waitFor(); System.out.println("Command exit code: " + exitCode); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在此例中,我们首先设置了脚本文件路径以及需要传递给脚本的两个参数值。然后我们通过创建一个命令数组来指定要执行的命令,这个命令数组包括了由`/bin/bash`命令解析脚本以及传递给脚本参数。接下来,我们通过`Runtime.getRuntime().exec()`方法来执行命令,并使用`BufferedReader`读取命令的输出。最后,我们使用`process.waitFor()`方法等待命令执行完成并获取结束的退出码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值