我正在尝试将参数分割成数组,以便我可以分配到不同的变量中,但不知怎的,我得到的错误是“读取-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
答案 0 :(得分:3)
read -a
不是read
内置版的标准化选项。请参阅http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html处的read
的POSIX标准,并注意POSIX sh(所有POSIX shell的基线规范)甚至都不指定数组 。 / p>
相反,它是一个扩展,仅在特定的shell中可用。要获得扩展,您必须使用其中一个特定的shell。你可以通过以下方式做到:
bash yourscript
)明确启动脚本。#!/bin/bash
或#!/usr/bin/env bash
作为脚本的第一行)如果您的shell为ksh
,则等效扩展名为read -A
。