Bash脚本for循环内嵌if语句报‘command not found’错误求助
Bash脚本if语句报错“command not found”的解决方法
你的问题根源是条件表达式的语法错误:[[和变量$counter之间、35和]]之间没有留空格。在Bash中,[[是一个特殊的关键字/命令,必须和后续的表达式分开;]]同理也需要和前面的内容保持空格分隔。如果不留空格,Shell会把[[$counter当成一个完整的命令去查找,自然会报“command not found”。
修正后的代码如下:
#!/bin/bash var="nef892na9s1p9asn2aJs71nIsm" for counter in {1..40} do var=$(printf "%s" "$var" | base64) # 用printf替代echo避免可能的换行问题 if [[ $counter -eq 35 ]]; then echo "$var" fi done
另外补充两个实用优化点:
- 用
printf "%s" "$var"替代echo $var,避免当var中包含特殊字符(比如换行、反斜杠)时出现意外行为 - 给变量引用加上双引号(
"$var"、"$counter"),防止Shell对变量内容进行分词或路径扩展,这是Bash脚本的通用最佳实践
内容的提问来源于stack exchange,提问作者Alex Gonzalez
相关产品推荐
相关产品推荐

