linux 内置读取命令标志
linux built-in read command flags
我 运行 陷入了一个奇怪的境地。我在 RHEL 6.3 上。我正在尝试使用内置的 'read' 命令读取数组中文件中的行并对其进行处理。
在我的脚本中,我使用
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 研究)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 计划,我也可以将该行读入数组?
感谢@John1024,我能够通过更改 #!从 #!/bin/sh 到 #!/bin/bash 的行(这是 运行 默认的 ksh shell )。
解决方案归功于@John1024,只是将其作为答案,以便将其标记为问题的解决方案。
我 运行 陷入了一个奇怪的境地。我在 RHEL 6.3 上。我正在尝试使用内置的 'read' 命令读取数组中文件中的行并对其进行处理。
在我的脚本中,我使用
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 研究)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 计划,我也可以将该行读入数组?
感谢@John1024,我能够通过更改 #!从 #!/bin/sh 到 #!/bin/bash 的行(这是 运行 默认的 ksh shell )。
解决方案归功于@John1024,只是将其作为答案,以便将其标记为问题的解决方案。