私は2つのパラメータを受け入れるスクリプトを書いています。
#! /bin/bash
eval for i in {$1..$2}; do echo $i; done
私は次のように実行します:
$ ./myscript 0002 0010
syntax error near unexpected token `do'
このエラーはなぜ発生しますか?
ループをグループ化する必要があるからだと思います。ただし、eval for i in {$1..$2}; do echo $i; done
に置き換えると、eval { for i in {$1..$2}; do echo $i; done; }
エラーはまだ存在します。
注:中かっこ拡張の前に使用したいと思いますeval
。私の例では、希望の出力はです0002 0003 0004 0005 0006 0007 0008 0009 0010
。支柱を拡張する前にパラメータ拡張を実行しますか?)
ベストアンサー1
その理由は、シェルがそれを評価する;
ためにeval
これを見ることができないからです。
評価を遅らせるには、シェル特殊文字をエスケープする必要があり、文字通り渡すと次のようになりますeval
。
eval for i in \{"$1".."$2"\}\; do echo \"\$i\"\; done