我有一个关于 bash 的问题:
这是一种检查条件然后自动回答问题的方法,就像 heredoc
中发生的那样吗?
我知道有两种方法可以自动回答问题(通过passwd
命令举例):
1)管道
<password> | passwd <username>
2)heredocs
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
或任何其他解决方案,
我想先看条件再回答问题
谢谢
最佳答案
也许用 expect 命令?
http://www.thegeekstuff.com/2010/12/5-expect-script-command-line-argument-examples/
由于我不熟悉 mdadm,这里有一个 FTP 的小例子。您可以看到它会根据服务器的响应执行不同的操作 - 我认为这就是您尝试执行的操作。
# 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 "$username\r"
exp_send_user "sent username\n"
} eof {
# No login prompt received. Display an error.
exp_send_user "could not connect\n"
}
关于linux - 检查条件然后自动回答问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826390/