Solaris 中的字符串表达式不起作用

String expresion in Solaris not working

有人知道为什么下一个代码不能在 Solaris 中使用 KShell 运行吗?

DATE=20180420
MONTH=`expr ${DATE:4:2}`
echo MONTH=$MONTH

它returns:

${DATE:4:2}: wrong substitution

Shell 脚本语法在不同 shell 中是不同的,因此您遇到了这个问题。如果您 运行 它在 bash 中出售,它将在 Solaris 中为您工作。所以最好像下面这样更改脚本:-

 DATE=20180420
 MONTH=$(echo $DATE | cut -c 5-6) 
 echo MONTH=$MONTH

好处是它可以在 unix 中的所有 shell 中工作。这里有更多选项:-

当天:-

day=$(date +%d)

yy 格式的年份:-

year=$(date +%y)

yyyy 格式的年份:-

year=$(date +%Y)

您可以将以下行放在脚本的顶部,这将解决您的问题。

 #!/bin/bash
 DATE=20180420
 MONTH=`expr ${DATE:4:2}` 
 # or MONTH=$(expr ${DATE:4:2}) 
 echo MONTH=$MON

希望对您有所帮助。