在所有bash脚本中都会以"女性符号"的形式打印出一个额外的表单提要字符。
- 角色:♀
- 数字代码:&9792
- 十六进制代码:&x2640
主要问题是表单提要是不可打印的字符。因此,大多数进程路径的bash脚本都没有为表单提要和崩溃实现过滤机制。
我正试图使用Ant工具为android构建一个APK,而女性符号破坏了脚本。
我还可以在从bash运行的所有PHP脚本中看到女性符号。下面是一个简单的测试脚本:
if (isset($argv[1])) {
echo "nStringn";
} else {
passthru('php -f ' . __FILE__ . ' arg1');
}
当我运行这行php -f script.php
(script.php包含上面的代码)时,输出如下:
♀一串
所以再一次,这不是一个特定于项目的问题,而是全系统的问题。我没能在另一台机器上复制它。
大约一周以来,我一直在寻找可能导致这种情况的答案,但没有成功。
你知道造成这种情况的根本原因是什么吗?
我今天在表单提要符号上遇到了类似的问题:
for /f "tokens=1,2 delims=!" %a in ('echo test') do (set RELAY=%a)
C:>echo %RELAY%
♀test
问题是cmd的"自动运行"中的CLS命令。startup.bat:
@echo off
doskey ps=C:toolstasklist_by_name.bat $1
doskey kill=C:toolstaskkill_by_pid.bat $1
doskey list=doskey /macros$bsort
cls
它与这个一起运行
HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
AutoRun "C:toolsstartup.bat"
当我删除CLS命令时,它是可以的。你可以在你的系统上检查它,也许它上设置了AutoRun。
这里有一个检测问题的最小批处理脚本:
@echo off
for /f "delims=" %%a in ('echo a') do if not "a"=="%%a" (
echo error : found problem in AutoRun cmd (you can try to remove cls and virtual terminal sequences)
exit /B 1
)
rem etc.
exit /B 0