2013-02-07 1 views
-1

start.sh 스크립트를 사용하는 데 문제가 있습니다. ./start.sh을 입력해도 작동하지 않습니다. 내 말은 아무런 오류가 없지만 아무것도하지 않는다는 의미입니다. 모든 색 빨간색 는 import sys,math,random print '\n'에에서 줄 내가 VIM을 사용하여이 파일을 열 때잘못된 쉘 스크립트처럼 보입니다. 고양이

가 (난 정말 이미지를 업로드하고 싶지만, 난 그냥 며칠 전이 사이트를 등록 할 수 없기 때문에)입니다. 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 
+0

어디에서 Bourne Shell에 포장 된이 Python 스크립트를 얻었습니까? 나는 당신이 저자와 함께 확인하는 것이 좋습니다. – Johnsyweb

+0

내가 할 수 있다면 해냈어. 그러나 나는 그와 접촉 할 수 없다. 감사합니다. – stacksmith

답변

1

스크립트에 자명 한 오류는 없습니다. 빨간색으로 표시된 섹션은 <<EOS이 포함 된 행 뒤의 행에서 EOS이 포함 된 행까지 이어지는 '여기 문서'입니다. 이 문서는 Python에 표준 입력으로 제공되며, 그 출력은 파일 target.txt에 씁니다. 스크립트의 나머지 부분은 파일에 rnn-learn 명령을 실행하고 구성 파일 config.txt로 안내합니다. 당신이 cat 명령을 포함하는 행 앞에 #을 넣었을 때

, 즉 주석이되고, 그래서 다음 줄은 그냥 스크립트를 쉘 '- 그들은 쉘 스크립트와 같은 의미가 아니라 vim 하드 누르면된다 그것을 알기 위해 (그것은 편집자입니다!). 따라서이 문서의 일부가 아니기 때문에 행의 색상이 변경됩니다.

cat은 실제로 필요하지 않습니다. 그 라인은 다음과 같이 쓸 수 있습니다 :

python > target.txt <<EOS 
+0

정말 고마워요. 다른 점을 확인해야합니다. – stacksmith

관련 문제