2012-03-16 4 views
1

에서 환경 변수를 설정 :.내가 내 스크립트 파일의 첫 번째 줄에서 다음 줄을 CSH

#!/bin/sh 

그래서 내가 사용 CSH

내가의 출력을 지정 wanto (?) 환경 변수에 다음

echo $MYUSR | awk '{print substr($0,4)}' 

을 나는 시도 :

set $MYVAR = echo $MYUSR | awk '{print substr($0,4)}' 

하지만 작동하지 않습니다. 어떻게해야합니까? 나는 sh 파일에서 그것을하고 싶다.

+0

아니요,/bin/sh는 본쉘이거나 때로는 bash로 바뀌어 야합니다 – dldnh

+0

궁금 해서요, 스크립트가'sh' 또는'csh'가 되었습니까? – dldnh

답변

2

에 변경이 작동하지 않을 경우 지금 날 수 있습니다./빈/SH 정말 Bourne 쉘 경우, 또는 당신이 #!/bin/sh으로, 다른 사람에서 스크립트의 기초를 상속 한 경우


, 은 당신이 알아 내야 그것은 링크 인 경우/빈/bash는

당신은 크기가 정확히 같은 곳

ls -l /bin/sh /bin/bash 

을 수행하여 당신이, 당신이 정말로 사용하고 bash는 파일에 대한 정보를 다시 얻는 경우에 말할하지만이라 할 수/빈/sh

그래서이 두 솔루션

MYVAR=$(echo $MYUSR | awk '{print substr($0,4)}') 
    echo $MYVAR 

MYVAR=``echo $MYUSR | awk '{print substr($0,4)}`` 
    echo $MYVAR 

    # arg!! only one pair of enclosing back-ticks needed, 
    # can't find the secret escape codes to make this look exactly right. 

(CSH)이 포함 된 모든 경우, 백 틱과 명령 치환으로 알려져 있습니다 $(...)을 시도합니다. 내부에서 명령을 실행하면 모든 출력이 나오며 명령 줄에 대체 된 다음 전체 명령이 실행됩니다.

이 정보가 도움이되기를 바랍니다.

+0

다음과 같이 표시됩니다. sh-3.1 $ ls -l/bin/sh/bin/bash -rwxr-xr-x 1 루트 루트 785856 2006 년 7 월 12 일/bin/bash lrwxrwxrwx 1 루트 루트 4 Jun 15 2010/bin/sh -> bash bash는 사용합니까? 결국 MYVAR을 수출해야합니까? 감사합니다. – alwbtc

+0

예,/bin/sh 및/bin/bash는 실제로 동일한 프로그램입니다. 일부 시스템에서/bin/sh를 사용하면/bin/bash에서 사용할 수있는 기능이 Bourne 쉘 (Solaris/HP/AIX 등의 구형 Unix 시스템의 경우/bin/sh, et.al)에 제한됩니다. 자신을 위해이 작업을 수행한다면, 앞으로 bash를 계속 사용하고 싶을 것입니다. 당신이 직업을 위해 그것을하고 있다면, 그렇게 할 수 있는지 확인해야합니다. – shellter

+0

...... 하위 쉘 환경 내에서 사용하는 데 필요한 변수 만 내보내면됩니다. 내보내기없이 프로그램을 작성했는지 테스트하거나 아니면 그냥 내보낼 수 있습니다. 즉, 모든 변수를 내보낼 것을 권장하지 않습니다. 실제 변수가 없기 때문에 메모리 사용량이 증가하기 때문입니다. – shellter

0

그것이 Bourne 쉘 또는 배쉬의 /bin/sh, 그리고 뭔가를 실행하기 위해 따옴표를 다시 사용이 그를 할당 ...

MYVAR=`echo $MYUSR | awk ...` 
+0

'echo $ SHELL'을 할 때'/ bin/csh'을 얻습니다. 내가'MYVAR ='echo $ CARMUSR | awk '{print substr ($ 0,21)}'''명령을 찾을 수 없습니다 "오류가 발생합니다. – alwbtc

+0

명령 줄 쉘은 csh 일 수 있지만 작성한 스크립트는 #! 다음에/bin/sh가 있으면 bourne 쉘 또는 bash에서 실행됩니다. – dldnh

0
해당 스크립트 첫 번째 줄이 Bourne 쉘에 의해 해석되는 것을 나타냅니다

(경우 sh)가 아니라 csh. , 지금이 권리를 테스트 할 수있는 방법이없는

#!/bin/csh 

set MYVAR = `echo $MYUSR | awk '{print substr($0,4)}'` 

echo $MYVAR 

같은 스크립트가 보일 것입니다

#!/bin/csh 
+0

처음에는 해시 표시가 html로 표시되지 않았습니다. 변경 사항은 sh에 대한 csh로 대체됩니다. –

+0

앞으로는 코드 샘플 앞에 4 칸을 쓰면 '#'은 의미를 잃어 (S.O.) 텍스트를 굵게 표시합니다. 또한 텍스트 입력 상자의 맨 위에는 텍스트 블록을 자동 들여 쓰기 (4 칸 포함)하는 {}을 포함한 일련의 편집 도구가 있으므로 코드 샘플, 프로그램 출력 행운을 빌며 글을 올리세요. – shellter

0

코드 첫 줄에 csh을 사용하고 있지 않음을 분명히 보여줍니다. 일반 sh 환경/셸을 사용하고 있습니다.

  1. 중 하나가 변경되지 않은 첫 번째 라인을 유지 #!/bin/csh 또는
  2. 에 첫 번째 줄을 변경 변수를 설정하는 코드를 업데이트 : 당신은 두 가지 옵션이 있습니다.

    MYVAR=`echo $MYUSR | awk '{print substr($0,4)}` 
    echo $MYVAR 
    

당신이 어떤 오류가 발생하는 경우 나, 알려주세요.

관련 문제