当我在终端运行如下命令时,它会返回一个 expr: non-integer argument
错误。有没有人可以向我解释一下这是什么意思?
$ x=20
$ y=5
$ expr x / y
expr: non-integer argument
当我在终端运行如下命令时,它会返回一个 expr: non-integer argument
错误。有没有人可以向我解释一下这是什么意思?
$ x=20
$ y=5
$ expr x / y
expr: non-integer argument
这些变量是Shell变量。要将它们扩展为另一个程序的参数(如expr),您需要使用$
前缀:
expr $x / $y
它报错的原因是因为它认为你试图对字母字符(即非整数)进行操作。
如果您正在使用Bash shell,您可以使用表达式语法实现相同的结果:
echo $((x / y))
或者:z=$((x / y))
echo $z
我相信在其他帖子中已经提到过了:
calc(){ awk "BEGIN { print "$*" }"; }
那么你可以简单地输入:
calc 7.5/3.2
2.34375
在您的情况下,它将是:
x=20; y=3;
calc $x/$y
或者,如果您愿意,将其作为单独的脚本添加并在$ PATH中使其可用,以便您始终可以在本地Shell中使用它:#!/bin/bash
calc(){ awk "BEGIN { print $* }"; }
echo '1 / 3' | bc -l
命令。 - Eugene为什么不使用let呢?我觉得它更容易。 这里有一个你可能会觉得有用的例子:
start=`date +%s`
# ... do something that takes a while ...
sleep 71
end=`date +%s`
let deltatime=end-start
let hours=deltatime/3600
let minutes=(deltatime/60)%60
let seconds=deltatime%60
printf "Time spent: %d:%02d:%02d\n" $hours $minutes $seconds
另一个简单的例子 - 计算自1970年以来的天数:
let days=$(date +%s)/86400
expr
。 - Gilles Quénotexpr
的投票加1。 - Prashant Kumarread num1 num2
div=`echo $num1 / $num2 | bc -l`
echo $div