2013-07-12 2 views
0

스크립트의 "실행 시간"을 "실시간"변수에 할당하려고합니다. 그래서 다음과 같이 시도 :Bash의 변수에 파이프 라인 결과를 할당하는 방법

realtime = `{ time (echo "mirror -Rv $LocalPath $LocalPath";echo "quit";)|lftp -u s1238262 FTPS://$RemoteHost ; } 2>&1 |grep "real"| awk '{print $2}'` 
echo $realtime 

그러나 나는 오류가 발생했습니다 :

++ grep real 
++ awk '{print $2}' 
+ realtime = 0m2.403s 
./test.sh: line 6: realtime: command not found 
+ echo 

내가 뭔가 일을했다
realtime = `{ time pwd; } 2>&1 |grep real|awk '{print $2}'` 

을 시도했다. 그러나 ftp 스크립트는 그렇지 않았습니다. 누구든지 나를 도울 수 있습니까?

+0

, 나는'실시간은 = ...'호출이 작동하지 않았다 생각한다. 'bash '의 변수 할당은 변수 이름과'='기호 사이 또는'='기호 다음과 값 앞에 공백이 없어야합니다 (예 :'realtime = something'이 좋으면'realtime = something' ,'realtime = something'과'realtime = something'은 모두 좋지 않다.). – twalberg

+0

또한'grep foo | awk '{bar}''는 보통 awk/foo/{bar} '로 쓰여집니다. – tripleee

+0

고마워요! 그러나 awk의 재 작성에 대해서는 얻지 못했습니다. 나는 그것을''realtime ='{time pwd; } 2> & 1 | awk '/ grep "real"/ {print $ 2}''''. 하지만 오류가 발생했습니다 : '++ awk '/ grep "real"/ {print $ 2}'' '+ a =' – dmoney

답변

3

bash에서 = 주위에 공백이 없어야합니다. 당신은 함수 또는 별칭 대화 형 세션에 정의라는 이름의`realtime`가없는 한

result=`ls` 
+1

[나는 구문 분석하지 마라!] (http://mywiki.wooledge.org/ParsingLs). (죄송합니다, 저항 할 수 없었습니다 :-)) – user000001

+0

건배! 나는 bash의 "no-space"규칙에 익숙하지 않았다. – dmoney

+0

백틱을 사용하지 마십시오. 'variable = $ (command args ...)'를 사용하십시오. –

관련 문제