[英]I want to do a comparison with a one-line text file in Windows command prompt
在BASH中執行此操作很簡單:
#!/bin/sh
echo "3" > text.file
foo=$(<text.file)
if [ $foo -eq 3 ]; then
echo "bar"
fi
返回bar
。
Windows將無法配合使用。
> 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
我很迷惑,我真的需要使它起作用。 我希望我還沒有做過一些愚蠢而基本的事情,但我擔心自己已經做了。
在用test.file引號編寫它時,需要用引號將3括起來以進行比較:
ECHO "3" > test.file
SET /p foo= < test.file
ECHO %foo%
IF %foo% equ "3" ECHO bar
如果要將%foo%解析為整數以執行其他操作,請使用帶有/a
參數的set
命令:
> SET /a foo=%foo%
> IF %foo% equ 3 ECHO bar
bar
編輯:我看到您正在嘗試在Linux外殼方面有一些經驗的同時學習批處理,但是MS Batch確實很有限,要擁有完整的外殼,您應該查看PowerShell 。
因為您實際上是在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
中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.