bash - 比较符号作为变量
问题描述
是否可以将比较符号设置为变量?
我想做这样的事情:
var1=${1}
var2=${2}
condition=${3}
if [[ "${var1}" "${condition}" "${var2}" ]]; then
echo "Warning!"
fi
./alert.sh "10" "5" ">"
解决方案
设置没问题,就是难用。(您的代码引发了语法错误。)
您可以从 切换[[ ]]
到test
,尽管它并不完全相同。
顺便说一句,>
是一个字符串运算符。您可能想要-gt
整数运算符。请参阅上面的链接以获取运算符表。
var1="10"
var2="5"
condition="-gt"
if test "${var1}" "${condition}" "${var2}"; then
echo "Warning!"
fi
输出:
Warning!
单方括号也可以工作(它们是等效的),但由于某种原因,ShellCheck检测到语法错误,所以为了让 ShellCheck 的使用更轻松,我想说只是避免它,即使这是一个错误。
[ "${var1}" "${condition}" "${var2}" ]
推荐阅读
- coq - Inductive 和 CoInductive 之间的唯一区别是对它们的使用(在 Coq 中)进行格式良好的检查吗?
- sql - oracle数据库中如何使用过滤查询
- embedded - 刷新图像与复制文件
- python - Pandas 生成器作为索引器
- r - 每组变异,然后解组
- android - 在没有 viewmodelScope 和 runBlocking 或 GlobalScope 的情况下调用 RoomDB 操作
- ios - 类型“TextView”不符合协议“UIViewRepresentable”
- ruby - Ruby 中 UTF-8 编码字符串中随机索引字符访问的时间复杂度是多少?
- sql - 如何将数字四舍五入到十(总是向上)
- java - TYPE_APPLICATION_OVERLAY 不适用于 Android 10