返回当前UTC时间字符串的Bash函数与CWD和原始文件名相呼应

时间:2015-03-23 17:28:55

标签: linux bash unix

尝试将UTC() bash函数中的字符串返回到$SST变量,然后使用echo打印它,同时在执行回显时调用cwd

#!/bin/bash

UTC(){ return "$(`date -u \"+%FT%TZ\"`)" }
SST="$(UTC)"; #ISO 8601 Script Start Time
owd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Path to THIS script.
me="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")"
echo -e "Started '$me' from '$owd' with 'cwd'='`$(cwd)`' @ $SST."

1 个答案:

答案 0 :(得分:2)

不要尝试将命令作为字符串返回;直接执行命令。

UTC() { date -u "+%FT%TZ"; }

当前目录命令为pwd而非cwd。你有两个反引号`...`$(...)。你只需要一个或另一个。

echo -e "Started '$me' from '$owd' with 'cwd'='$(pwd)' @ $SST."

最后,如果您愿意,可以删除变量赋值中的引号。严格来说,他们没有必要,但如果你不确定,那么在引用方面犯错是没有错的。

SST=$(UTC)
owd=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
me=$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")