我声明了三个变量。
$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 尚不存在,则变量将为空。
现在,我如何验证这三个变量是否都为空。我想使用 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 实用程序都能够自行打开输入文件,因此您无需使用 cat
启动管道。
foo=`ssh <server_1> "cut -f -d: /etc/passwd | grep -e $IID -e $EID"`
或者类似的东西。
关于linux - Shell 脚本中的 OR 条件 - Unix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046297/