首页 > 解决方案 > 在 bash 程序中获取“[: =: 一元运算符”

问题描述

我一直在编写一个示例 bash 程序来练习 bash 脚本,但是每当我尝试使用正确的变量运行它时,它就会输出“[: =: unary operator expected”并退出。

#! /bin/bash
clear
i=""
P="PASSWORD"
echo "Please enter your password"
while [ $i = "PASSWORD" ]
do
read $i
done

标签: linuxbashshell

解决方案


如果 $i 为空,则由于参数不足 [ = "PASSWORD" ] 导致语法错误

  1. 您可以使用 bash 选项 [[ $i = "PASSWORD" ]] 但它是 bash 运算符,它可能与旧 shell 不兼容

  2. 您可以将变量放入配额中,例如 [ "$i" = "PASSWORD" ] 这是首选,如果您的变量包含空格或 shell 扩展标记,例如 *、?、[1..9 ]


推荐阅读