私は Ubuntu の初心者です。この本「Linux コマンドライン: 完全入門」を読んでコードを練習しています。楽しいのですが、第 8 章で困っています。
➜ ~ echo {1..10}
1 2 3 4 5 6 7 8 9 10
➜ ~ echo {z..a}
{z..a}
➜ ~ echo {Z..A}
{Z..A}
➜ ~ echo {a..z}
{a..z}
➜ ~
文字の範囲を取得できません。なぜですか? どうすれば修正できますか? 私のシェルは oh-my-zsh です。
答え1
これはksh(そしてバッシュ)機能には含まれておらず、あなたのシェル、例:ダッシュ(Debian/Ubuntu で使用されるデフォルトのシェル)。
違いを確認するには、
bash -c "echo {a..z}"
dash -c "echo {a..z}"
Debian のデフォルト/bin/sh
は を指しますdash
。ただし、bash シェルで実行している場合は、期待どおりにシーケンスが展開されます。 で始まるスクリプトは#!/bin/sh
を使用しますdash
。
私の Debian 7 でも、zsh
シーケンスは展開されません。(ksh、bash、dash、zsh をチェックしました)。