linux - 在 bash 程序中获取“[: =: 一元运算符”
问题描述
我一直在编写一个示例 bash 程序来练习 bash 脚本,但是每当我尝试使用正确的变量运行它时,它就会输出“[: =: unary operator expected”并退出。
#! /bin/bash
clear
i=""
P="PASSWORD"
echo "Please enter your password"
while [ $i = "PASSWORD" ]
do
read $i
done
解决方案
如果 $i 为空,则由于参数不足 [ = "PASSWORD" ] 导致语法错误
您可以使用 bash 选项 [[ $i = "PASSWORD" ]] 但它是 bash 运算符,它可能与旧 shell 不兼容
您可以将变量放入配额中,例如 [ "$i" = "PASSWORD" ] 这是首选,如果您的变量包含空格或 shell 扩展标记,例如 *、?、[1..9 ]
推荐阅读
- libreoffice-writer - 为什么“继续编号”行为异常?
- python - 我不明白为什么这段代码不起作用:(
- django - 无法导入“import_export”
- python - Aws SES -> SNS 通知在打开、点击事件中不包括收件人地址?
- perl - 如何从 Perl 中的当前目录移动文件?
- internationalization - 检票口国际化
- google-bigquery - 如何预处理来自 Stackdriver 的 BigQuery 数据
- node.js - 有没有办法查询时间戳中有特定毫秒的文档?[蒙古]
- php - 将 StdClass 对象类型转换为数组
- html - 悬停效果+img上的超链接