Bash
Mac bash 上的日期命令
我在 Ubuntu 中有一個小腳本,想在 Mac 上使用。
date
函式不一樣,所以它在語法上失敗這是原始的 Ubuntu BASH 腳本;
function pass () { pass="$(ldapsearch -Y GSSAPI -Q -H ldap:///dc%3Dant%2Cdc%3Damazon%2Cdc%3Dcom -b DC=ant,DC=amazon,DC=com -s sub cn=$1 | grep -Ew 'pwdLastSet:' | awk '{print $2}')" pass_epoch="$(((pass / 10000000) - 11644473600))" pass_epoch_exp="$((pass_epoch + 86400*90))" today="$(date +%s)" countdown_epoch="$(expr $pass_epoch_exp - $today)" countdown="$((countdown_epoch / 86400))" pwdSet_date="$(date -d @$pass_epoch)" expires_date=$(date -d "@$((pass_epoch + 86400*90))") echo "pwdLastSet: "$pwdSet_date echo "pwdExpires: "$expires_date echo " daysLeft: "$countdown } usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] pwdLastSet: pwdExpires: daysLeft: 23
MacOs 與 Linux 不是同一個 UNIX 系列,因此命令的選項可以不同。
解決方案1:
man date
是你的朋友。在 MacOS 上,您需要使用
-j
和的組合-f
。E444:~ emas$ date -j -f %Y%m%d-%H%M%S 20180101-234852 +%Y/%m/%d\ %H:%M:%S 2018/01/01 23:48:52 E44:~ emas$ date -j -f %Y%m%d-%H%M%S 20180101-234852 +%s 1514868532 E444:~ emas$ date -j -f %s 1514868532 Mon Jan 1 23:48:52 EST 2018
解決方案 2:使用 brew ( https://brew.sh/ ) 安裝一些 GNU/Linux 工具。
brew install coreutils
將安裝許多基礎工具並在它們前面加上g
, 所以date
變成gdate
並位於您的/usr/local/
文件夾中。