簡體   English   中英

字符串比較是shell腳本

[英]string comparison is shell script

我有一種將文件從一台服務器復制到另一台服務器的方案,因為我需要檢查任何現有的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輸出

眾所周知,從ps的輸出中提取信息非常困難。 如果您的系統具有pgrep ,那就容易多了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM