[英]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.