【问题标题】:Bash script, if statement [closed]Bash脚本,if语句[关闭]
【发布时间】:2014-05-26 05:06:15
【问题描述】:

我正在练习脚本,但我不知道我的脚本有什么问题。这就是我现在所拥有的。

#!/bin/bash

read -p "Continue? y/n" y

y=0

if (y eq- 0 )then;
    y=1
fi
if (y eq- 0 )then;
    read-p "Thank you for running this script"
    exit
else
    read-p "You will now exit"
    exit
fi

任何建议或想法都会有所帮助。

【问题讨论】:

  • 问题是什么?!
  • 读取一个变量,然后将0分配给same变量。一些真的看起来很奇怪的ifs。 read-p(!) 作为某种echoexit 后跟 else。我推荐一个 Bash 教程。 (如果您尝试使用的是 Bash。)
  • 您的问题需要修改或澄清。要知道你的脚本有什么问题,我们需要知道:1. 你已经做了什么 2. 你想做什么 3. 你具体在哪个部分苦苦挣扎。这将提高您的答案质量,并在将来让其他人清楚。
  • 通常我建议你先阅读手册页: man read ,但是如果你这样做是为了 read 这样做, man read ,你会发现 -p 不是你可以使用的标志( aka -p 不是您可以通过阅读的选项)。但是,目前该手册页不正确,我刚刚通过电子邮件向作者发送了电子邮件以解决该问题。
  • @tux 有什么不清楚的答案;你还有什么期待?你有工作的例子......

标签: linux bash


【解决方案1】:

一些注意事项:

  • 要在 bash 中使用变量,请在前面添加 $

  • ;如果放在同一行,则在 then 之前

    #!/bin/bash -x
    
    read -p "Continue? y/n" y
    #y=0
    # Why set y to 0 when you read it ?
    # Why check y equal to 0 if you just set it ?
    #if [[ $y -eq 0 ]] ; then
    #  y=1
    #fi  
    
    if [[ "$y" = "y" ]]; then
       read -p "Thank you for running this script"
       exit
    else
       read -p "You will now exit"
       exit
    fi
    

您还可以使用正则表达式来检查大小写的“y”:

if [[ $y =~ [yY] ]]; then
   read -p "Thank you for running this script"
fi

【讨论】:

    【解决方案2】:
    if ($y eq- 0 ) then;
    

    read -p "You will now exit"
    

    对空格要非常小心,它们不仅是为了可读性,有时它们也是有原因的!

    注意 ; (分号)。 它只是为了避免将以下文本放在新行上。对我来说,它在命令行操作中很有用,但我看不出有理由在脚本中使用它。只需转到下一行。你见过有人用一行写满分号的脚本吗?不,它不可读。那为什么一定要和IF一起使用呢?

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 2012-11-19
      • 2017-01-15
      • 1970-01-01
      • 2014-01-30
      • 2019-03-08
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多