Bash 比较文件';if中的数字内容(linux)

Bash 比较文件';if中的数字内容(linux),bash,Bash,我想将.txt文件中的值与用户的输入进行比较 e、 g 我不知道是我在谷歌上问错了问题,还是没有答案 您可以使用命令的输出,就像它实际上在脚本本身中一样。在这种情况下,您需要文件的内容,因此可以使用: if [[ ${amm} -gt $(cat bank.txt) ]] 或者,更好的是,为了避免额外的cat过程: if [[ ${amm} -gt $(<bank.txt) ]] 当然,如果这个文件不存在,或者它包含的不是一个数字,那么这个方法就不能很好地工作。您可能应该在使用之前检查

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

e、 g


我不知道是我在谷歌上问错了问题,还是没有答案

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

if [[ ${amm} -gt $(cat bank.txt) ]]
或者,更好的是,为了避免额外的
cat
过程:

if [[ ${amm} -gt $(<bank.txt) ]]
当然,如果这个文件不存在,或者它包含的不是一个数字,那么这个方法就不能很好地工作。您可能应该在使用之前检查内容

bash
也提供了一种方法,可以通过
(…)
而不是
[…]]
来实现这一点,这可能更符合您想要表达的内容

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

如果(${amm}>$(
是重定向,而不是数字比较;您将
[$amm]
的输出重定向到文件
bank.txt
,也就是说,
[$amm>bank.txt]
[$amm]>bank.txt
完全相同(除了便携式以外,在命令中任何地方都能重定向是一种巴斯克主义)。考虑一下……并在提问之前先运行代码。顺便说一下,这不是一个非常安全的银行——它容易出现竞争条件:<代码> ECHO($(银行-AMM)”。>bank.txt
会将您的提款后金额写入文件,但不会作为原子操作;如果不锁定,在同一时间运行15次提款的人可能会全部成功。毫无疑问,@κκκκκκκκκκκκκάνκκέτες-这可能是可怕的变形,但这是我用有限的知识所能做到的最好的:-)
if [[ ${amm} -gt 42 ]]
if (( ${amm} > $(<bank.txt) ))