执行mat.txt中的printf字符串代码块时出现命令未找到及语法错误的问题求助
执行mat.txt中的printf字符串代码块时出现命令未找到及语法错误的问题求助
嗨,我来帮你排查下这个问题哈,你遇到的命令未找到和语法错误,主要是两个地方没处理好:
脚本没指定解释器
你直接给mat.txt加执行权限就运行,系统根本不知道该用哪个shell来解析这个脚本,大概率会用默认的sh(有些系统里sh是轻量的dash,和bash语法有不少差异),这很容易触发语法报错。解决办法很简单,在mat.txt的最顶部加一行:#!/bin/bash这样系统就明确知道要用bash来执行这个脚本啦。
printf的字符串包裹方式不对
你用双引号包裹图案内容,但里面有大量\、|这类特殊字符,shell会先解析双引号里的转义序列,不仅会让图案变形,还可能让shell误以为引号没闭合(比如某些转义错误导致引号提前终止),直接触发语法错误。更靠谱的方式是用单引号包裹整个字符串,因为单引号里的内容会被shell当作纯文本,不会解析任何转义字符或特殊符号,能完整保留你想要的图案格式。修改后的printf命令是这样的:
printf ' _ ____ __ _ _ __ (_)_ __/ ___|_ __ __ _ / _| |_ | '\''_ \| \ \/ / | | '\''__/ _` | |_| __| | | | | |> <| |___| | | (_| | _| |_ |_| |_|_/_/\_\\____|_| \__,_|_| \__| '小提醒:单引号里要是想输出单引号,得用
'\''这种方式转义——先关闭单引号,加转义的单引号,再重新打开单引号就行。
把这两处修改好,重新保存mat.txt,再执行chmod +x mat.txt,然后运行./mat.txt,应该就能正常输出你想要的图案啦。
备注:内容来源于stack exchange,提问作者Keeran
相关产品推荐
相关产品推荐

