我有一个方案将文件从一个服务器复制到另一个服务器,因为我需要检查任何现有的scp正在进行中,编写了一个示例shell脚本但是条件不满足,即使语法正确,主要这里的问题是ps
命令的输出将存储在变量scpstat
中并且在if语句中匹配字符串相同,这里我得到的变量的输出不同于在外部执行脚本。可以看到在执行sh -x scpsamp.sh
时脚本执行的格式不同,为什么输出中附加了“sh
”,但是在没有ps并且分配为scpstat='scp'
时我可以得到条件正确,我在输出变量时做错了什么。请帮忙
#!/bin/sh
scpstat=`ps -ef | grep scp | egrep -v 'grep|ssh' | awk '{print $8}')`
if [ "$scpstat" = "scp" ];
then
echo "SCP is in progress"
else
echo "No SCP in progress"
fi
答案 0 :(得分:5)
从ps
的输出中提取信息是非常困难的。如果您的系统有pgrep
,则更容易:
if pgrep scp >/dev/null
then
echo "SCP is in progress"
else
echo "No SCP in progress"
fi