他の方向で多くの質問と回答を見つけることができますが、残念ながら私が望む代替方法はありません。文字を交換する、例えば#
、文字列として、たとえば、次test#asdf
のようなシーケンスを使用します。{0..10}
文字列シーケンスの取得、この例ではtest0asdf test1asdf test2asdf test3asdf test4asdf test5asdf test6asdf test7asdf test8asdf test9asdf test10asdf
。
私が試したこと以外の人から得たもの:
echo '_#.test' | tr # {0..10}
(投げの使い方)echo '_#.test' | sed -r 's/#/{0..10}/g'
(返品_{0..10}.test
)echo '_#.test' | sed -r 's/#/'{0..10}'/g'
(最初のものが機能し、その後は得られますsed: can't read (...) no such file or directory
)
この問題を解決するための作業方法は何ですか?
まだコメントしていない可能性があるので編集してください。#
文字列は別のプログラムから渡されるため、文字を置き換える必要がある文字列で使用する必要があります。しかし、まず他のキャラクターに置き換えることができます。
ベストアンサー1
演算子{0..10}
zsh
(現在他のシェルでもサポートされていますbash
)はcsh
-スタイル中括弧拡張の別の形式です。
広がるシェルを通してコマンドを呼び出す前に。このコマンドは、これらの{0..10}
。
With tr '#' {0..10}
(引用符#
がない場合、シェルはコメントの先頭に解析されます)、tr
末尾を ("tr", "#", "0", "1", ..., "10") として呼び出します。引数としてtr
期待しない引数が多すぎます。
希望する場所は次のとおりです。
echo '_'{0..10}'.test'
echo
「_0.test」、「_1.test」、...、「_10.test」をパラメータとして渡すために使用されます。
#
または、この演算子に変換するには、{0..10}
評価するシェルコードに変換します。
eval "$(echo 'echo _#.test' | sed 's/#/{0..10}/')"
パラメータとしてeval
渡す場所です。echo _{0..10}.test
(そのようなことをお勧めしません。)