小编Sam*_*Web的帖子

Bash RegEx用于检查用户输入的浮点数

我对bash编程比较陌生,我目前正在创建一个简单的计算器.

它需要使用浮点数并检查它们是否如此.

我有一个checkNumbers函数:

function checkNumber {

    regExp=[0-9]

    if [ $testNo =~ $regExp ]
    then
        echo "That is a number!"
        let check=1
    else
        echo "Damn! Not A Number!"
    fi
}
Run Code Online (Sandbox Code Playgroud)

我让用户输入这样的数字:

while [ $check -eq 0]
do
    echo "Please enter a number
    read testNo
    echo ""
    checkNumber
done
Run Code Online (Sandbox Code Playgroud)

这不起作用,我得到这个错误:

./calculator.sh:39行:[:=〜:二元运算符预期

第39行是:

if [ $testNo =~ $regExp ] 
Run Code Online (Sandbox Code Playgroud)

我尝试了很多正则表达式,如:

^*[0-9]*$
Run Code Online (Sandbox Code Playgroud)

^*[0-9]\.[0.9]*$
Run Code Online (Sandbox Code Playgroud)

等等

另外,我已经结合其他方式执行检查:

case $testNo
in
    ^*[0-9]*$) echo "That is a number!";;
    *) echo "Error! Not a number!";;
esac
Run Code Online (Sandbox Code Playgroud)

if …
Run Code Online (Sandbox Code Playgroud)

regex bash expression bash4

9
推荐指数
1
解决办法
9830
查看次数

Bash - 日期无法识别英国格式 (dd/mm/yyyy)

我有一个格式为以下日期的文本文件dd/mm/yyyy

14/09/1992
15/04/1983
15/09/1961
02/06/1979
14/12/1971
08/02/2001
19/06/1999
14/09/1969
31/08/2002
30/07/1980
25/04/1973
03/01/1992
Run Code Online (Sandbox Code Playgroud)

我想将其转换为YYYY/mm/dd脚本中的格式。我打算使用 date 命令来这样做:

date -f tempDate +%Y/%m/%d
Run Code Online (Sandbox Code Playgroud)

但问题是,它无法识别英式日期并显示以下错误,因为我相信它正在阅读它,mm/dd/yyyy因为我不希望它这样做:

date: invalid date `14/09/1992'
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?或者有什么方法可以更改日期格式的顺序?

另外,我需要这个脚本在我不是系统管理员的服务器上工作。

format bash date

1
推荐指数
1
解决办法
4679
查看次数

标签 统计

bash ×2

bash4 ×1

date ×1

expression ×1

format ×1

regex ×1