for i in {1..4}; do echo "Welcome $i";done
私の考えでは
Welcome 1
Welcome 2
.
.
代わりに私は得る
welcome {1..4}
Android端末エミュレータ
答え1
/bin/bashではなく/bin/sh(シェル)で実行されています。
$ /bin/sh -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome {1..4}
ここでbashを試してみてください。
$ /bin/bash -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome 1
Welcome 2
Welcome 3
Welcome 4
シェルを好む場合は、ニコラスが書いたことを行います。
for i in $(seq 4); do echo "Welcome $i" ; done
しかし、Bashを使用することをお勧めします。
答え2
を実行していないか、bash
以前のバージョンを実行しているか、中bash
括弧の拡張がわからないシェルを実行しています。
最も明白な説明は、ターミナルエミュレータが実行されているか/bin/sh
、いくつかの小さなシェルが実行されていることです(ほとんどPOSIX互換であることを願っています)。
(そして中括弧拡張をサポートする他のすべてのシェルからbash
)明示的なforループは暗黙的なループに変更される可能性があります:
printf 'Welcome %d\n' {1..4}
または
printf 'Welcome %d\n' $(seq 4)
支柱の拡張はないがseq
。
答え3
〜のように先行は達成するのが難しいbashを実行していないか、バージョンが悪いとしましょう。最近。私はbashの以前のバージョン(おそらくイディオムが開発される前に?)で次のものをテストしましたsh
。
for i in `seq 1 4`;do echo "Welcome $i";done
これだけで十分です。
答え4
このアプリケーションを使用する場合:Android端末エミュレータ、「それでは組み込みのAndroidシェルと通信するための端末エミュレータです。」つまり、自分の bash バージョンを手動でインストールしていない場合(デバイスはそれをルート化する必要があります。デバイスをルーティングしましたか?)、bash ではなくデフォルトの Android シェルを持つことになります。そのため、Androidのシェル機能セットのみを使用でき、次の高度なbash構文と機能は使用できません{1..4}
。
私が見つけたいくつかの情報。
- Android端末エミュレータに関するよくある質問
- Android シェルのコマンドリファレンス- よくある質問で「内蔵Androidシェルを使用するための短くて不完全なガイド」を説明する方法