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

时间:2016-12-30 01:16:35

标签: bash

我想将.txt文件中的值与用户输入

进行比较

e.g。

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

我不知道我是否在谷歌上提出了错误的问题,或者说这个行动没有答案。

1 个答案:

答案 0 :(得分:1)

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

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) ))

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