如果没有正确的话,似乎并不理解bash

时间:2016-01-19 10:36:27

标签: bash

我正忙着制作一个能给用户一个是或否的问题的功能。但是我的脚本似乎犯了一个错误。

#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice"==y ]
then
  echo "you choose $choice"
else
  echo "you did not choose y"
fi

这似乎总是会返回You choose y|n,尽管我希望它会返回you did not choose y

我一直在寻找一段时间并尝试使用双括号,无括号,引号,无引号来解决它。

3 个答案:

答案 0 :(得分:3)

这是语法错误,您没有正确使用运算符==。 您必须在操作员周围放置空格。 好的做法:在y周围加上引号,这样你就知道它是一个字面值,并且出于兼容性原因使用=而不是==:

#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice" = "y" ]
then
  echo "you choose $choice"
else
  echo "you did not choose y"
fi

我没有找到任何令人满意的消息来源,这是我能找到的最好的:

答案 1 :(得分:0)

在==附近添加空格,它将起作用。

#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice" == y ]
then
  echo "you choose $choice"
else
  echo "you did not choose y"
fi

答案 2 :(得分:0)

您只需引用第二个字符串"y"并在string1,运算符和string2之间添加空格。

[…]
if [ "$choice" == "y" ]
[…]

您不必将方括号加倍。