bash - bash中的'while'循环:不理解行为
问题描述
我想强制人们在收到提示后传递某个字符串:
while [[ ! ${task} =~ "up|down" ]]; do
echo $task
read -p "Task to conduct? [up|down] " input
task=$input
done
尽管传递了正确的字符串,但我仍然收到提示:
Task to conduct? [up|down] down
down
Task to conduct? [up|down] up
up
Task to conduct? [up|down]
我想念什么?
解决方案
您需要删除正则表达式周围的双引号。看起来他们正在阻止扩张。这适用于我的盒子
#!/usr/bin/env bash
while [[ ! ${task} =~ ^(up|down)$ ]]; do
read -p "Task to conduct? [up|down] " input
task=$input
done
推荐阅读
- node.js - 处理快速管道中的错误
- apache-spark - spark如何仅加载目录中的部分文件?
- python - colab中的torchtext ImportError
- laravel - 根据另一个字段的 Laravel 验证最大数量(来自 period_starts 的 +2
- python - 使用 Tkinter 手动注释
- java - 将事件发布到 microsoft graph 时出现错误 (java.lang.NoSuchMethodError: okhttp3.Request$Builder.tag)
- bash - 我们可以在 shell 脚本(Bash)中使用 lldb 吗?
- php - wordpress php代码使用post_content调用显示来自数组内部的db图像
- javascript - 使用线性渐变编辑图像并转换为 base64 React
- javascript - 发布数据后jQuery添加选择到选项