echo "20+5"从字面上使用会产生文本“ 20+5”。
25在这种情况下,我可以使用什么命令来获取数字总和?
另外,仅使用 bash 进行浮点运算的最简单方法是什么?例如,echo $((3224/3807.0))打印0:(.
我正在使用基本命令外壳(“命令行”)本身或通过使用命令行中可用的语言来寻找答案。
expr 似乎不喜欢括号(在数学中用于显式运算符优先级):
expr 3 * (2 + 1)
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
如何在bash中表达操作员优先级?
我正在 bash 中进行整数比较(试图查看用户是否以 root 身份运行),我发现了两种不同的方法:
双等于:
if [ $UID == 0 ]
then
fi
Run Code Online (Sandbox Code Playgroud)
-eq
if [ $UID -eq 0 ]
then
fi
Run Code Online (Sandbox Code Playgroud)
我知道在 bash 中没有 >= 或 <=,只有 -ge 和 -le,那么为什么有一个==if-eq呢?
比较双方的方式有区别吗?
当我使用以下内容时,我得到了预期的结果:
$ echo {8..10}
8 9 10
Run Code Online (Sandbox Code Playgroud)
如何以简单的方式使用此大括号扩展以获得以下输出?
$ echo {8..10}
08 09 10
Run Code Online (Sandbox Code Playgroud)
我现在认为这可以使用seq(没有尝试)获得,但这不是我想要的。
有用的信息可能是我仅限于这个 bash 版本。(如果您有zsh解决方案,但没有bash解决方案,也请分享)
$ bash -version
GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)
Run Code Online (Sandbox Code Playgroud) 我有这个:
date +"%H hours and %M minutes"
Run Code Online (Sandbox Code Playgroud)
我用节日来表达..但它说:“零九小时”..我想让它说“九小时”!
但是 date 总是给我 09 ......所以我想知道 bash 是否可以轻松地使它变成 9 ?
在我试过的复杂脚本中
printf %d 09
Run Code Online (Sandbox Code Playgroud)
但它失败了..不是八进制:(
任何的想法?
似乎$[expr]执行算术扩展就像$((expr)). 但是我$[在 bash 手册中找不到任何提及。此命令没有给出任何结果:
gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
Run Code Online (Sandbox Code Playgroud)
这个运算符是什么,它的行为在任何地方都标准化了?
我的 bash 版本:GNU bash,版本 3.2.51(1)-release (x86_64-apple-darwin13)
有没有办法凭空创建一个由数字序列组成的文件,从给定的数字开始,每行一个?
就像是
magic_command start 100 lines 5 > b.txt
Run Code Online (Sandbox Code Playgroud)
然后,b.txt将是
100
101
102
103
104
Run Code Online (Sandbox Code Playgroud) 在 Bash 中,可以使用条件表达式比较两个整数
ARG1 OP ARG2
OP是一个
-eq,-ne,-lt,-le,-gt,或-ge。如果arg1 分别等于、不等于、小于、小于或等于、大于或大于或等于arg2,则这些算术二元运算符返回 true 。Arg1和arg2可以是正整数或负整数。
或算术表达式:
<= >= < >比较
== !=平等与不平等
为什么我们有两种不同的方法来比较两个整数?什么时候用哪个?
例如,[[ 3 -lt 2 ]]使用条件表达式,并(( 3 < 2 ))使用算术表达式。当比较为真时两者都返回 0
比较两个整数时,这两种方法可以互换使用吗?如果是,为什么 Bash 有两种方法而不是一种方法?
我想累积一个文件夹中包含的多个文件的行大小。我编写了以下脚本:
let a=0
let num=0
for i in folder/*
do
num=`cat $i | wc -l`
a=$a+$num
done
echo $a
Run Code Online (Sandbox Code Playgroud)
我在脚本末尾得到的是 123+234+432+... 而不是加法运算的结果。
有时我需要将一个数除以另一个数。如果我可以为此定义一个 bash 函数,那就太好了。到目前为止,我被迫使用诸如
echo 'scale=25;65320/670' | bc
Run Code Online (Sandbox Code Playgroud)
但如果我能定义一个看起来像的 .bashrc 函数就太好了
divide () {
bc -d $1 / $2
}
Run Code Online (Sandbox Code Playgroud) arithmetic ×10
shell ×6
bash ×5
command-line ×2
bashrc ×1
bc ×1
calculator ×1
date ×1
expr ×1
files ×1
function ×1
history ×1
quoting ×1
shell-script ×1
test ×1
text ×1
utilities ×1