【问题标题】:linux for loop and character search [duplicate]linux for循环和字符搜索[重复]
【发布时间】:2021-04-10 19:18:28
【问题描述】:

我正在尝试创建一个循环来检查字符串是否包含字符“#”或“”。如果确实包含此内容,则回显“是”,否则回显“否”。

#!/bin/bash

string="#### ## #  #### #"
for (( i=0; i<${#string}; i++ )); do
        str="${string:$i:1}"
        if ["$str"!="#"||"$str"!=" "];
                then
                        echo "No"
                        break
                else
                        continue
        fi
        echo "yes"
done

【问题讨论】:

  • 你必须重新考虑你的逻辑;每个字符都不等于# 或不等于空格。
  • 你有什么问题? Shell脚本不是C;只需使用内置设施,如case $string in *[ #]*) echo yes;; *) echo no;; esac
  • 第二个重复链接是代码中实际逻辑错误的规范。

标签: linux bash


【解决方案1】:

请尝试关注,如果它适合你,请告诉我,谢谢!

#!/bin/bash
string="##Actually Mosses##"
echo "$string"
for (( i=0; i<${#string}; i++ ));
do
        str="${string:$i:1}"
        if [[ "$str" == "#" || "$str" == " " ]]
        then
                echo -n "Yes "
        else
                echo -n "No "
        fi
done

Expected Output: ##Actually Mosses##
Yes Yes No No No No No No No No Yes No No No No No No Yes Yes

注意:从脚本中删除 echo "$string" 和选项 -n,因为在您的情况下不需要。

用于 echo 的选项 -n 用于在同一个 . 上打印。

【讨论】:

  • 感谢他的帮助
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多