在BASH中这样做很简单:
#!/bin/sh
echo "3" > text.file
foo=$(<text.file)
if [ $foo -eq 3 ]; then
echo "bar"
fi
返回bar
。
> ECHO "3" > test.file
> SET /p foo= < test.file
> ECHO %foo%
"3"
> IF %foo% equ 3 ECHO bar
> IF NOT %foo% equ 3 ECHO bar
bar
我很神秘,我真的需要让它发挥作用。我希望我没有做过一些非常愚蠢和基本的事情,但我担心我有。
答案 0 :(得分:0)
当您使用引号将其写入test.file时,您需要使用引号括起3来进行比较:
ECHO "3" > test.file
SET /p foo= < test.file
ECHO %foo%
IF %foo% equ "3" ECHO bar
如果要将%foo%解析为整数以执行其他操作,请使用带有set
参数的/a
命令:
> SET /a foo=%foo%
> IF %foo% equ 3 ECHO bar
bar
编辑:我看到你正在尝试学习批处理,同时在linux shell中有一些经验,但MS Batch真的有限,要有一个完整的shell你应该看PowerShell。
答案 1 :(得分:0)
由于您ECHO
字面意思"3"
,包括引号,实际上您将"3"
与3
进行比较,这当然会失败。所以:
(ECHO 3) > test.file
,因此您的比较IF %foo% equ 3 ECHO bar
成功(此处为数字比较),(ECHO "3") > test.file
,但要比较IF %foo% equ "3" ECHO bar
(请注意,由于""
,这构成字符串比较); 请注意,我将ECHO
命令放入括号()
,因为否则尾随空格(重定向标记>
之前的空格)将写入test.file
as好。