bash中if语句条件的问题

phy*_*ysu 0 shell-script

我有以下 bash 脚本:

#!/bin/bash
  
echo "Enter your name: "
read name

if [ ${name}=="sam" ]  
then
        echo "Hi Sam!"
else
        echo "Who the hell are you?"
fi
Run Code Online (Sandbox Code Playgroud)

我希望它显示“你到底是谁?” 如果输入的名称不是“sam”。但它显示“嗨,山姆!” 即使我输入随机字符串。

这里有什么问题?

Art*_*nov 5

请阅读有关使用条件表达式的 bash 教程和手册,例如[ ]test

简而言之:

  1. 没有必要使用===就足够了。
  2. 您必须在前后放置空格,=否则您不是将表达式的右侧部分分配给左侧部分,而是进行比较。
  3. 引用你的变量

最终结果:

if [ "${name}" = "sam" ]
Run Code Online (Sandbox Code Playgroud)