首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bash for循环不搜索字符

bash for循环不搜索字符
EN

Stack Overflow用户
提问于 2021-04-10 23:12:35
回答 2查看 41关注 0票数 0

嘿,伙计,我有一个for循环,它检查一个字符串是否只有'#‘和“”。如果只包含这两个字符,则回显为yes,如果不包含,则回显为no。

代码语言:javascript
运行
复制
string="###############
    #             #
    # #############
    #             #
    # ######### # #
    #         # # #
    # ### ##### # #
    #   #     # # #
    # # ###########
    # #            
    ###############"

confirm_variable="Yes"
for (( i=0; i<${#string}; i++ )); do
str="${string:$i:1}"
    if [ "$str" == "#" ] || [ "$str" == " " ] || [ "$str" == "\n" ]; 
        then
            continue
        else
            confirm_variable="No"
            break
    fi

done
echo $confirm_variable

我不确定为什么它不能正常工作,因为如果我用字符串“#### # ##”试一下,它的工作原理也是这样的

EN

回答 2

Stack Overflow用户

发布于 2021-04-10 23:46:08

换行符有点棘手。你有3个选择

对于bash

  • (可能在其他shell中不起作用),您可以执行[ "$str" = $'\n' ]

  • You can do

代码语言:javascript
运行
复制
newline='
'
... [ "$str" == "$newline" ] ...

  1. 直接进入换行符(相当难看)

代码语言:javascript
运行
复制
... [ "$str" == '
' ] ...
票数 0
EN

Stack Overflow用户

发布于 2021-04-11 02:41:06

您可以使用bash尝试这种方式。不需要循环

代码语言:javascript
运行
复制
cat le_script
#!/bin/bash
! [ "$1" ] && { echo "No" ; exit ; }
string="${1//#}"
string="${string// }"
string="${string//$'\n'}"
[ "$string" ] && echo "No" || echo "Yes"

这样称呼它:

代码语言:javascript
运行
复制
./le_script "$string"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67035934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档