关于脚本循环可能的问题

时间:2014-06-02 13:05:27

标签: bash awk

我对所有这些事情都很陌生,所以如果我愚蠢的话,我会道歉!我环顾四周,但似乎找不到任何可以解决这个问题的方法。我现在正在学习,所以非常感谢一些帮助!

我目前正在制作脚本,在我需要运行su (username)的脚本的一部分内,然后让用户输入密码。有没有办法让su命令继续运行,直到运行以下命令后在输出中检测到特定用户名为止 -

ps aux | grep bash | awk '{print $1}' | sort | uniq

我希望继续尝试替换用户,直到他们更正(或取消脚本)或至少超过3次,然后自动注销。

我正在考虑使用'直到'循环或其他什么?

(until....(the output of command) = (username) run su (username))

对不起,如果我没有很好地解释自己,希望你们得到我所追求的内容!

我非常感谢你的帮助:)

干杯,杰克:)

-------------- EDIT ------------------------- EDIT ------ - - - - - - - - - -编辑 - - - - - - 由于我的代表,我无法回答我自己的问题。这是我写的内容。 (为这里的烂摊子道歉:S)

嘿大家,

我想我实际上已经开始工作了!使用以下脚本---

until [ "ps aux | grep bash | awk '{print $1}' | sort | uniq" = "(username)" ] 
  do

     echo "Please enter password for (username)"
     su (username)

  done

现在看起来非常简单,它正在发挥作用。在它不能识别脚本的某些部分之前,例如'做'但我想我只需要语法和格式是正确的。

如果我能做些什么来让它变得更好,请告诉我,但我非常感谢大家的建议! :)我会考虑让它只运行一定次数,但我们会看到!

谢谢,

杰克:)

1 个答案:

答案 0 :(得分:1)

假设,目前我还没有办法测试这个假设,当密码输入失败时su返回非零,并且假设密码正确且su shell返回零干净地退出然后你应该能够使用su本身的返回代码来确定是否再次循环。如下所示。

while echo "Please enter password for (username)"; ! su (username); do
    ....
done