我注意到在OSx和Linux系统中,printf内置函数的表现似乎不同。我曾以为内置函数就是内置函数,这与我遇到的任何特定问题无关,只是我无法解释这种现象。
OSx
printf '%(+%s)T\n' -2
-bash: printf: `(': invalid format character
which printf
printf is a shell builtin
printf is /usr/bin/printf
Linux
printf '%(+%s)T\n' -2
+1431027100
which printf
printf is a shell builtin
printf is /usr/bin/printf
以下是有关测试的一些信息。在OSx上,我使用通过brew安装的bash版本。
OSx版本
bash --version
GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.1)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Linux版本
bash --version
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
help printf
命令是否显示支持%(fmt)T
格式说明符?也许bash是以不同的方式编译的。 - John Kugelmanwhich printf
没有任何意义。请使用type printf
。 - Charles Duffyecho $BASH_VERSION
而非bash --version
来检查每个版本的版本号。这将检查您当前运行的版本,而不是检查当前路径中的哪个版本是第一个。 - Charles Duffy