我正在尝试将 bash 命令的输出存储在变量中。我对 shell 脚本很陌生,但到目前为止,我有以下内容:
#!/bin/sh
MOSTRECENTMOD="$(echo | ls -t | head -n1)"
echo "$MOSTRECENTMOD"
这在 cygwin 中工作得很好,但在 Solaris 上不行。有任何想法吗?我正在使用 Unix 换行符。我尝试了很多方法,但似乎不起作用。
在 Solaris 上,它只输出:
$(echo | ls -t | head -n1)
运行时。
谢谢。
最佳答案
Solaris 上的标准 /bin/sh
是相当严格的 System V Bourne Shell。它绝对不是 POSIX 兼容的 shell,并且不理解 $(...)
表示法(还有许多其他差异,或大或小)。这意味着要继续使用 /bin/sh
,您需要更改 $(..)
表示法以使用反引号(在内联 Markdown 中显示起来很痛苦 -我尝试了各种序列但没有成功:
`...`
或者,如果您的计算机有 /bin/bash
,请在 shebang 行指定;否则,指定支持 $(...)
表示法和许多其他有用功能的 /bin/ksh
。
关于shell - 简单的 shell 脚本可以在 cygwin 中运行,但不能在 solaris 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055185/