如何在CentBS中以与CentOS相同的方式实现FreeBSD中的expr功能?

问题描述 投票:0回答:2

我想从文件中获取一个数字并递增它。文件始终只包含一个数字。所以在Linux(CentOS)中,我可以这样做:

Tmp="an_num.tmp"
Tmpg=$(cat $Tmp)
Tmpi=$(expr $Tmpg + 1)

但我不能在FreeBSD中做同样的事情。据我了解,FreeBSD的expr版本不支持递增变量:expr $ Tmpg + 1

$ Tmp="an_num.tmp"
$ Tmpg=$(cat $Tmp)
$ Tmpi=$(expr $Tmpg + 1)
expr: syntax error

但我怎么能意识到呢?

$ uname -a FreeBSD srv 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1#0 r306420:Thu Sep 29 01:43:23 UTC 2016 [email protected]:/ usr / obj / usr / src / sys / GENERIC amd64

bash centos freebsd
2个回答
0
投票

FreeBSD默认使用不同的shell。安装bash(pkg install bash),用bash运行它,然后在那里运行你的脚本。或者,使用shebang line #!/usr/local/bin/bash


0
投票

FreeBSD下的/ bin / sh不支持你期望的$()表示法,而是使用反引号(``)代替:

在/ bin / sh下的11.1-RELEASE-p4上测试:

Tmp="an_num.tmp"
Tmpg=`cat $Tmp`
Tmpi=`expr $Tmpg + 1`
© www.soinside.com 2019 - 2024. All rights reserved.