shell - 简单的 shell 脚本可以在 cygwin 中运行,但不能在 solaris 上运行

标签 shell unix scripting cygwin solaris

我正在尝试将 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/

相关文章:

linux - Linux 上的 shell 脚本

regex - 提取与模式匹配的文件名并删除重复项并存储在数组中

python - 使用Python打开shell环境,运行命令退出环境

linux - 如果文件由 'open' 创建但没有指定 'mode',模式将是什么?

unix -/usr/share/zoneinfo 史诗失败

python - 从 bash 脚本调用 python 函数

javascript - javascript 代码应该始终加载在 html 文档的头部吗?

bash - 用于检查三个变量是否相同的 unix shell 脚本

linux - 如何读取逗号分隔的变量并将它们附加到 unix 中的字符串缓冲区中

linux - 字符串 Bash 脚本 if then 语句失败