嘿,伙计,我有一个for循环,它检查一个字符串是否只有'#‘和“”。如果只包含这两个字符,则回显为yes,如果不包含,则回显为no。
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
我不确定为什么它不能正常工作,因为如果我用字符串“#### # ##”试一下,它的工作原理也是这样的
发布于 2021-04-10 15:46:08
换行符有点棘手。你有3个选择
对于bash
[ "$str" = $'\n' ]
newline='
'
... [ "$str" == "$newline" ] ...
... [ "$str" == '
' ] ...
发布于 2021-04-10 18:41:06
您可以使用bash尝试这种方式。不需要循环
cat le_script
#!/bin/bash
! [ "$1" ] && { echo "No" ; exit ; }
string="${1//#}"
string="${string// }"
string="${string//$'\n'}"
[ "$string" ] && echo "No" || echo "Yes"
这样称呼它:
./le_script "$string"
https://stackoverflow.com/questions/67035934
复制