2011-10-20 3 views
3

このコードで乱数を生成する方法は? $ RANDOMを使用しようとしましたが、その数は変わりません。どのように改善する?あなたがfindコマンドを実行すると$RANDOM関数呼び出しは、その結果に置換されているので起こりどのように見つけるとsedと乱数を生成するには?

find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \; 
+0

HTML/XMLの正規表現による解析は避けてください。 –

+0

私を説明することができます、なぜですか? – user1005101

+0

理由の簡単なリストについては、[この回答](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)を参照してください。 –

答えて

1

は、findsedコマンドを実行していないとき。

できることはsed -i ...の部分をスクリプトに入れて、代わりにfindに渡します。

例えば、subst.shが含まれている場合:$RANDOMはファイルがある何度でも評価されようとしているので、

#!/bin/bash 
r=$RANDOM 
sed -i "s/<field name=\"test/<field name=\"test${r}/g" [email protected] 

が続い

find . -type f -exec ./subst.sh {} \; 

は、トリックを行う必要があります。

(乱数はまだある特定のファイル間で同じになりますが、それは別のファイルのための明確なことに注意してください。)

+0

それは動作します!ありがとう!申し訳ありませんが、私はbashの新機能ですが、$ @をどういう意味ですか? – user1005101

+0

これは、スクリプトに対するすべてのコマンドライン引数の配列です。この場合、最初の引数を渡すとsufficedとなり、$ 1を書くこともできます。 – Philippe

2

あなたも、この「1行」の方法でスクリプトファイルを作成しないようにすることができ、例:

function FUNCtst() { echo "tst:$1";echo "tst2:$1"; }; export -f FUNCtst; find -exec bash -c 'FUNCtst {}' \; 

はそう、あなたは:

  1. は、複雑な関数を作成
  2. funcion -f
  3. 輸出
  4. エクスポートfuncion

を呼び出していないと、ファイルを作成する必要はbashを実行見つけます!

関連する問題