linux - 检查条件然后自动回答问题

标签 linux bash awk pipe heredoc

我有一个关于 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
欢迎使用

heredocspiping 或任何其他解决方案,

我想先看条件再回答问题

谢谢

最佳答案

也许用 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/

相关文章:

linux - 如何在 64 位 Linux 上从 32 位 Wine 执行 shell 脚本?

node.js - 无法安装 node-sass 因此无法安装 gulp-sass

linux - 来自客户端的 Oracle 12c CentOS PDB 连接

linux - 附加到/etc/apt/sources.list

apache - 过滤 access.log 以返回唯一 IP 地址列表和每个客户端的成功请求数(代码 200)的有效方法是什么?

bash - 搜索匹配项,然后用上一行的值替换此匹配项后的值

linux - 如何使 rpm 自动安装依赖项

bash - 获取第 m 行和第 n 行之间的内容

sql - monetdb:关闭 mclient 上的密码

bash - awk中的调用函数