我正在尝试在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/