1

我正在尝试在 zsh 中使用下一个代码:

select var in $list; do
  if [ x"$var" != x"" ]; then
    echo $var
    return
  fi
done

在 bash 中会导致如下结果:

  1. 第一的
  2. 第二
  3. 第三

但是在zsh中我得到了这个:

  1. 第一 3. 第三
  2. 第二

我怎样才能让它在新行上打印每个变体?

4

1 回答 1

3

从 Zsh 手册:

 COLUMNS <S>
     The number of columns for this terminal session.  
     Used for printing select lists and for the line editor.

这在这里有效:

emulate -L zsh
setopt sh_word_split
# if not running in a separate shell, you'll want to restore the old value
export COLUMNS=1
list="first second third"
select var in $list; do
  if [ x"$var" != x"" ]; then
    echo $var
  return
  fi
done

如果在主交互式 shell 上运行,请恢复 COLUMNS 的旧值。

于 2013-05-13T09:00:04.993 回答