read -a在unix中不起作用

时间:2017-09-26 16:09:04

标签: arrays shell unix

我正在尝试将参数分割成数组,以便我可以分配到不同的变量中,但不知怎的,我得到的错误是“读取-a”不起作用。

命令:

bash-4.1$ ./sftpupstream.ksh CheckFile "aaa|bbbb|ccc|dddd"
aaa|bbbb|ccc|dddd
./sftpupstream.ksh[20]: read: -a: unknown option
Usage: read [-ACprsSv] [-d delim] [-u fd] [-t timeout] [-n count] [-N count] [var?prompt] [var ...]

代码:

RUN_MODE=$1
PARAMSTR=$2

echo $PARAMSTR
IFS="|" read -a arr <<< "$PARAMSTR"
for i in "${arr[@]}"; do
        echo "$i"
done

1 个答案:

答案 0 :(得分:3)

read -a不是read内置版的标准化选项。请参阅http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html处的read的POSIX标准,并注意POSIX sh(所有POSIX shell的基线规范)甚至都不指定数组 。 / p>

相反,它是一个扩展,仅在特定的shell中可用。要获得扩展,您必须使用其中一个特定的shell。你可以通过以下方式做到:

  • 使用扩展shell(bash yourscript)明确启动脚本。
  • 使用指示扩展shell的shebang(#!/bin/bash#!/usr/bin/env bash作为脚本的第一行)

如果您的shell为ksh,则等效扩展名为read -A