我对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) 我有一个格式为以下日期的文本文件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)
还有另一种方法吗?或者有什么方法可以更改日期格式的顺序?
另外,我需要这个脚本在我不是系统管理员的服务器上工作。