を使用するときに何をエスケープする必要があるのか理解できませんsh -c
。
forループを実行したいとしましょうfor i in {1..4}; do echo $i; done
。それ自体はうまくいきます。 :に渡すとeval
エスケープする必要がありますが、動作させることはできません。$
eval "for i in {1..4}; do echo \$i; done"
sh -c "[...]"
$ sh -c "for i in {1..4}; do echo $i; done"
4
$ sh -c "for i in {1..4}; do echo \$i; done"
{1..4}
$ sh -c "for i in \{1..4\}; do echo \$i; done"
{1..4}
$ sh -c "for i in \{1..4\}\; do echo \$i\; done"
sh: 1: Syntax error: end of file unexpected
これに関する詳細情報はどこにありますか?
ベストアンサー1
-c
一般的な慣行は、一重引用符(後ろ)でスクリプトを定義することです。使用する必要がある他の部分は、構成が{1..4}
機能するシェルです。
$ bash -c 'for i in {1..4}; do echo $i; done' # also work with ksh and zsh
ダッシュと連携させる代替方法は、対話式sh
に使用するシェルから拡張することです(対話式シェルとしてbashまたはzshを使用すると仮定します)。
$ dash -c 'for i do echo $i; done' mysh {1..4}
1
2
3
4