-1

このstart.shスクリプトの使用に問題があります。と入力する ./start.shと、うまくいきません。つまり、エラーは発生しませんが、何もしません。

このファイルを VIM で開くと (どうしても画像をアップロードしたいのですが、数日前にこのサイトを登録したばかりなのでアップロードできません) からimport sys,math,random までの行print '\n'がすべて赤くなります。後EOSは通常通りの色で表示されます。#の前に入力catすると#cat <<EOS | python > target.txt、つまり、色が変わります。

だから私はこの行を考えます:

cat <<EOS | python > target.txt

間違っている。どうすれば修正できますか?

#!/bin/sh

if [ "$1" = clean ]; then
rm -f *.log *.dat target.txt
exit
fi

num=1
length=1000
period=50

cat <<EOS | python > target.txt
import sys,math,random
funcs = [
lambda t : (0.8 * math.sin(t), 0.8 * math.cos(t)),
lambda t : (0.3 * math.sin(t), 0.3 * math.cos(t)),
lambda t : (0.8 * math.sin(3 * t), 0.8 * math.cos(t)),
lambda t : (0.8 * math.cos(t), 0.8 * math.sin(3 * t)),

lambda t : (0.4 * math.sin(2 * t) + 0.4, 0.8 * math.cos(t)),
lambda t : (0.4 * math.sin(2 * t) - 0.4, 0.8 * math.cos(t)),
lambda t : (0.8 * math.sin(2 * t), 0.4 * math.cos(t) + 0.4),
lambda t : (0.8 * math.sin(2 * t), 0.4 * math.cos(t) - 0.4),

lambda t : (0.4 * math.cos(t) + 0.4, 0.8 * math.sin(2 * t)),
lambda t : (0.4 * math.cos(t) - 0.4, 0.8 * math.sin(2 * t)),
lambda t : (0.8 * math.cos(t), 0.4 * math.sin(2 * t) + 0.4),
lambda t : (0.8 * math.cos(t), 0.4 * math.sin(2 * t) - 0.4),

lambda t : (0.4 * math.sin(t) + 0.4, 0.8 * math.cos(t)),
lambda t : (0.4 * math.sin(t) - 0.4, 0.8 * math.cos(t)),
lambda t : (0.8 * math.sin(t), 0.4 * math.cos(t) - 0.4),
lambda t : (0.8 * math.sin(t), 0.4 * math.cos(t) + 0.4),

lambda t : (0.8 * math.sin(t), 0.8 * math.cos(2 * t)),
lambda t : (0.8 * math.sin(t), -0.8 * math.cos(2 * t)),
lambda t : (0.8 * math.cos(2 * t), 0.8 * math.sin(t)),
lambda t : (-0.8 * math.cos(2 * t), 0.8 * math.sin(t)),

lambda t : (0.3 * math.sin(t) + 0.5, 0.3 * math.cos(t) + 0.5),
lambda t : (0.3 * math.sin(t) + 0.5, 0.3 * math.cos(t) - 0.5),
lambda t : (0.3 * math.sin(t) - 0.5, 0.3 * math.cos(t) + 0.5),
lambda t : (0.3 * math.sin(t) - 0.5, 0.3 * math.cos(t) - 0.5)
]
def gen_sigma():
sigma = [0.01, 0.05]
n = 0
while True:
    yield sigma[n % len(sigma)]
    n += 1
gen = gen_sigma()

for f in funcs:
sigma = gen.next()
for n in xrange($num):
    m = random.randint(0, 1000)
    for t in [x * ((2 * math.pi) / $period) for x in xrange(m, $length+m)]:
        print '\t'.join([str(x + random.gauss(0, sigma)) for x in f(t)])
    print '\n'
EOS

if [ x`which rnn-learn` == x ]; then
path1=../../src/rnn-learn/
else
path1=
fi
${path1}rnn-learn -c config.txt target.txt
4

1 に答える 1

1

スクリプトに明らかな問題はありません。赤でマークされているセクションは、 を含む行の次の行から<<EOSだけを含む行までの「ヒア ドキュメント」EOSです。ヒア ドキュメントは Python への標準入力として提供され、Python はその出力を file に書き込みますtarget.txt。スクリプトの残りの部分では、構成ファイルに基づいて (私が推測するに) rnn-learn、ファイルに対してコマンドを実行します。target.txtconfig.txt

#コマンドを含む行の前にa を置くcatと、それはコメントになるため、次の行は「単なるシェル スクリプト」です — それらはシェル スクリプトとして意味がありませんが、vimそれを知るのは難しいでしょう (それはエディターです) !)。そのため、線はヒア ドキュメントの一部ではないため、線の色が変わります。

cat本当に必要ありません。行は次のように記述できます。

python > target.txt <<EOS
于 2013-02-07T04:37:38.430 に答える