【发布时间】:2016-10-20 10:58:29
【问题描述】:
我遇到了一个奇怪的情况。我在 RHEL 6.3 上。我正在尝试使用内置的“读取”命令来读取数组中文件中的行并进行处理。
在我的脚本中,我正在使用
while IFS=" " read -r -a appInfo
do
echo "4 ${appInfo[0]}"
echo "4 ${appInfo[1]}"
echo "4 ${appInfo[2]}"
echo "4 line *{appInfo[@]}"
currentApp="${appInfo[*]}"
.....
done < details.txt
当我从命令行执行脚本时,它工作正常。读取命令显示以下信息
read: usage: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
如果我在命令行上执行read --version,我会得到
命令行版本读取(AT&T Research)2006-12-19
但是当我尝试从 Bamboo 项目中执行完全相同的脚本时,读取命令会产生错误
read: -a: unknown option
Usage: read [-ACprsv] [-d delim] [-u fd] [-t timeout] [-n nchar] [-N nchar]
[var?prompt] [var ...]
Bamboo: 版本阅读(AT&T Research)2006-12-19
那么,如果版本显示相同,为什么标志显示不同?
可能是什么问题。我该如何解决这个问题,以便即使从 Bamboo 计划运行它也可以将行读入数组?
【问题讨论】:
-
RHEL 6.3 已达到end-of-life。由于当前系统的错误往往比旧系统少,是否有充分的理由不升级?
-
不确定。该决定是由我们的运营团队做出的,我们通常对此没有任何影响。 :( 但是,在这种情况下,为什么行为会有所不同?
-
我不使用 RHEL/bamboo 但是,根据
read帮助消息判断,在我看来,您的命令行脚本在bash下运行,而竹脚本在@987654328 下运行@. -
谢谢。我会检查的。两者都在默认外壳下运行。因此,从您的评论中,我了解到当我使用我的 id 登录时,服务器上的默认 shell 设置为 bash shell,而运行 Bamboo 计划的帐户可能已设置为 ksh。我需要详细了解默认 shell 的设置方式,并了解它们在这两种情况下的设置方式。
-
@John1024 - 感谢您的建议。这就是问题所在。我用 #!/bin/bash 替换了 #!/bin/sh 并且能够继续,
标签: linux shell bamboo built-in