在WSL中,字符串到数组的转换为空,但在Linux中可以正常工作

时间:2019-07-18 13:08:53

标签: linux bash macos windows-subsystem-for-linux

我正在尝试在WSL(Ubuntu)中使用以下简单命令:

$ OS="windows redhat centos ubuntu"
$ ARR_OS=($OS)
$ echo ${ARR_OS[0]}
<BLANK OUTPUT>
$ echo ${ARR_OS[1]}
windows redhat centos ubuntu

如果在Linux中执行相同的命令,则输出将不同:

$ OS="windows redhat centos ubuntu"
$ ARR_OS=($OS)
$ echo ${ARR_OS[0]}
windows
$ echo ${ARR_OS[1]}
redhat

我期望WSL与Ubuntu Linux的工作原理非常相似,但是我在尝试使其工作方面遇到了一些困难。

有人知道为什么WSL输出不一样吗?

编辑: 我已经在WSL终端中附加了一个示例运行,并在注释中加入了建议

查看Screenshot of WSL Terminal Output in Windows 10

奇怪,我在 OSX 中尝试了确切的命令,并产生了相同的结果:

→ echo $SHELL
/bin/zsh

→ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

→ OS="windows redhat centos ubuntu"

→ ARR_OS=($OS)

→ declare -p ARR_OS
typeset -a ARR_OS=( 'windows redhat centos ubuntu' )

→ echo ${ARR_OS[0]}
<BLANK>

→ echo ${ARR_OS[1]}
windows redhat centos ubuntu

更新: 我发现这篇出色的文章解释了zsh和bash中的数组差异: https://blog.mimacom.com/arrays-on-linux-shell/

0 个答案:

没有答案