我有一个问题:
这是一种检查条件然后自动回答诸如heredoc
发生的事情之类的问题的方法吗?
我知道我们可以自动回答问题的两种方法(通过passwd
命令举例):
1) 配管
<password> | passwd <username>
2)特雷文档
passwd <username> <<EOF
<password>
<password>
EOF
现在,问题:
如何提出条件来回答它们
///if [ `passwd` -eq 0 ]; then
<<EOF
<password>
<password>
EOF
fi
例如,这是不可能的,知道吗?
#!/bin/bash
mdadm mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1
if [ $? -eq 0 ]; then
<<EOF
ok
EOF
elif [ $? -ne 0]; then
<<EOF
failed
EOF
fi
欢迎heredocs
和piping
或任何其他解决方案,
我想先检查条件,然后能够回答问题
谢谢
也许是用期望命令?
http://www.thegeekstuff.com/2010/12/5-expect-script-command-line-argument-examples/
这里有一个小FTP的例子,因为我不熟悉mdadm。您可以看到它根据服务器的响应执行了一些不同操作 - 我认为这就是您要执行的操作。
# Connect to the FTP server using the "spawn" command.
spawn ftp $hostname
# Wait for a login prompt.
expect -re "(Name|login|Login|Username).*:.*" {
# Login prompt received. Send username to server.
exp_send "$usernamer"
exp_send_user "sent usernamen"
} eof {
# No login prompt received. Display an error.
exp_send_user "could not connectn"
}
我假设您想检查操作的结果。您可以通过两个步骤执行此操作:
passwd <user> <<EOF
<password>
<password>
EOF
if [ $? -eq 0 ]; then
echo "Great success"
fi
$?
保存上次执行的语句的返回代码。