簡體   English   中英

Shell腳本中的OR條件-Unix

[英]OR condition in Shell Scripting - Unix

我聲明三個變量。

$1=`ssh <server_1> cat /etc/passswd|cut -f -d:|grep -e $IID -e $EID`
$2=`ssh <server_2> cat /etc/shadow|cut -f -d:|grep -e $IID -e $EID`
$3=`ssh <server_3> cat /etc/passwd}|cut -f -d:|grep -i $CID`

通過將ssh帶入服務器並檢查是否存在我作為輸入提供的ID,可以創建以上三個變量。 如果ID還不存在,則變量將為null。

現在,如何驗證所有三個變量是否為空。 我想使用IF中指定的OR條件。

我試過了,

if [ -s "$1" -o  -s "$2" -o  -s "$3"];then
echo -$1 $2 $3 "already exist(s)"

它沒有工作。 請指教。

PS:我剛剛開始在Unix上的職業,如果在任何地方出錯,我都可以糾正我。

幾點。

在分配變量時,請勿使用美元符號:

foo=xxx

變量$1$2等已用於命令行參數。 選擇其他名稱。 但是請不要花$4 :-)

為ssh指定命令時,如果該命令具有參數,則必須將其引起引用,因為該命令必須是ssh的單個參數。 在您的情況下,請使用雙引號,因為您需要$IID等的變量擴展。

大多數Unix utils都可以自己打開輸入文件,因此您不需要使用cat啟動管道。

foo=`ssh <server_1> "cut -f -d: /etc/passwd | grep -e $IID -e $EID"`

或類似的東西。

這是我的錯字。 我實際上已經宣布為

1=`ssh <server_1> cat /etc/passswd|cut -f -d:|grep -e $IID -e $EID` 
2=`ssh <server_2> cat /etc/shadow|cut -f -d:|grep -e $IID -e $EID` and so on. 

我嘗試過,

if [ -s "$1" -o  -s "$2" -o  -s "$3"];then
echo -e $1 $2 $3 "already exist(s)"

由於我今天必須提交腳本,因此我使用了常規方法,

ssh <server_1> "cat /etc/passswd|cut -f -d:|grep -e $IID -e $EID" > file1
ssh <server_2> "cat /etc/shadow|cut -f -d:|grep -e $IID -e $EID" > file2
ssh <server_3> "cat /etc/passwd|cut -f -d:|grep -ix $CID" > file3

if [ -s file1 -o -s file2 -o -s file3]; then
for i in `cat file1 file2 file3`
do
echo $i "already exists"
done
else

現在我從第一篇博文中了解到-s確保文件不為空,-z確保字符串為空。

暫無
暫無

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

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