字符串比较是shell脚本

时间:2016-04-05 09:48:00

标签: bash shell

我有一个方案将文件从一个服务器复制到另一个服务器,因为我需要检查任何现有的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  

sh -x output

1 个答案:

答案 0 :(得分:5)

ps的输出中提取信息是非常困难的。如果您的系统有pgrep,则更容易:

if pgrep scp >/dev/null
then
    echo "SCP is in progress"
else
    echo "No SCP in progress"
fi