我正在寻找一些与编写脚本相关的帮助,该脚本可以在ubuntu,amazon-linux和OSX等操作系统上执行。
以下是一个简单的脚本,用于计算两个日期之间的天数。
str = str.replaceAll("X,"");
上述问题是它只能在可以使用gdate(GNU日期)的OSX上运行。 是否有人建议执行相同程序并可在不同系统上执行的解决方案?
由于
答案 0 :(得分:-1)
我设法找到了满足我的解决方案。所以我正在检查正在使用哪个发行版,并根据我可以选择正确的工具:OS X上的gdate
,否则date
。
check_package() {
package_name=${1}
check_type=$(which ${package_name})
if [[ -z "${check_type}" ]] ;
then
echo "Install the required ${package_name} which isn't installed!"
echo "Ensure ${package_name} is in your $PATH"
exit 2
fi
}
# Usage calculate_date_diff package_name date -d/-h/-m/-s
calculate_date_diff() {
current_date=$(${1} '+%Y-%m-%d')
first_date=$(${1} -d "$current_date" "+%s")
second_date=$(${1} -d "${2}" "+%s")
case "${3}" in
"--seconds" | "-s") period=1;;
"--minutes" | "-m") period=60;;
"--hours" | "-h") period=$((60*60));;
"--days" | "-d" | "") period=$((60*60*24));;
esac
datediff=$(( (${first_date} - ${second_date})/(${period}) ))
echo ${datediff}
}
# Format of date: yyyy-mm-dd
DATE_IN_PAST=${1}
# Detect the platform (similar to $OSTYPE)
OS="$(uname)"
case ${OS} in
'Darwin')
check_package "gdate" && calculate_date_diff "gdate" ${DATE_IN_PAST} -d
;;
'Linux')
check_package "date" && calculate_date_diff "date" ${DATE_IN_PAST} -d
;;
'FreeBSD')
check_package "date" && calculate_date_diff "date" ${DATE_IN_PAST} -d
;;
'SunOS')
check_package "date" && calculate_date_diff "date" ${DATE_IN_PAST} -d
;;
*) ;;
esac