在 if (linux) 中比较文件的数字内容



我想将.txt文件与用户的输入进行比较

,例如

read -p 'Enter the ammount you want to withdraw:' amm
if [ $amm > bank.txt ];
then
    echo 'You dont have enough money in your account'
else
    $bank - $amm >> bank.txt
fi

我不知道它是在Google上问错误的问题还是没有答案。

您可以使用命令的输出,就好像它实际在脚本本身中一样。在这种情况下,您需要文件的内容,因此可以使用:

if [[ ${amm} -gt $(cat bank.txt) ]]

或更好的是避免额外的cat进程:

if [[ ${amm} -gt $(<bank.txt) ]]

这将执行命令cat bank.txt,捕获其输出,并将其放置在被执行的命令中。因此,如果该文件包含单行42,那就好像您的命令是:

if [[ ${amm} -gt 42 ]]

当然,如果该文件不存在或应该包含一个单个数字以外的其他内容,则该方法无法正常工作。您可能应该在使用内容之前检查内容。

bash还提供了一种使用((...))而不是[[...]]进行此操作的方法,这可能更自然地与您想要表达的内容相适应。

if (( ${amm} > $(<bank.txt) ))

,但我实际上更喜欢 [[...]]变体。

最新更新