2014-07-08 1 views
2

몇 사람이 도울 수 있기를 바랍니다. ksh에서 다음을 실행하려고합니다. 에는 var라는 변수와 var1이라는 변수가 있습니다.AIX 조건부 다중 명령 실행

위의 명령을 실행하면 "var"변수에 값이 할당되지 않습니다. 명령이 실행되고 있지만 "var"가 범위를 벗어나서 새 변수를 작성하는 것과 같습니다 (올바른 값 N이 울린 할당 후에 에코를 시도했습니다).

[[ $var1 = "N" ]] || (command 1; var=N; echo $var) 

누군가이 문제를 해결할 방법을 알고 있습니까?

이중 파이프를 사용하는 이유는 동일한 조건이 매우 많기 때문에 IF 문을 사용하지 않기 위해서입니다.

감사

[[ $var1 = "N" ]] || { command 1; var=N; echo $var; } 

이렇게하여 그룹화 명령 목록을 subshelling 방지와 같이 대신 (...)의

+0

'(....)의 내부 변수는 서브 쉘'(...)'에 국한되어 있습니다. 당신이보고있는 것은 예상되는 행동입니다. 만약 당신이 서브 쉘을 사용해야한다면, 가장 간단한 것은'echo "$ var">/tmp/varFile'이고'/ tmp/varfile'을 읽으면 값을 얻을 수 있습니다 (다른 해결책이 있지만 쉬운 일이 있습니다) ;-)). 행운을 빕니다. – shellter

+0

고맙습니다. 나는 그것을 대답으로 받아 들일 것이지만 그것을 표시 할 수는 없다. :피. 감사합니다. – sergiopuy

+0

'/ tmp/varfile'을 변수로 읽는 방법에 대한 도움이 필요하면 더 자세한 답변을 쓸 수 있습니다. 다행히 도움이되었습니다. 행운을 빕니다. – shellter

답변

2

사용 명령으로 그룹화 {...}에 할당 된 값을 유지 변수. 이것은 AT & T와 MirBSD Korn 쉘 모두에서 작동합니다.

+0

나는 sergiopuy가 다시 돌아와서 이것을 틱하기를 바랍니다 ... 훨씬 더 좋은 대답입니다. bash에서도 잘 작동합니다. – pedz

+0

고마워요, 그게 효과가 있었고 이미 스크립트를 바 꾸었습니다. 그것은 유용 할 것이다 :). 감사 – sergiopuy