내 컴퓨터에서 실행할 수 있는 테스트 sh 스크립트가 있는데 모든 것이 제대로 작동하면 출력이 생성되지 않습니다. 작업 중인 폴더의 모든 내용을 원격 서버로 전송하기 위해 scp를 사용하고 있는데 원격 서버에서 실행하면 다음과 같은 오류가 발생합니다.
egrep: Unmatched ) or \)
egrep: Unmatched ) or \)
./script.sh: line 229: ./helperScripts/script2.pl: No such file or directory
내 컴퓨터에서는 이러한 오류가 발생하지 않으며 확인했을 때 script2.pl이 helperScripts에 있고 거기에 있음을 발견했습니다.
원격 서버에서 sh -version을 실행하면 다음과 같은 결과가 나타납니다.
GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
내 컴퓨터 터미널에서 sh -version을 실행하면 다음과 같은 결과가 나타납니다.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.
이것이 중요한지 모르겠습니다. 내가 무엇을 할 수 있는지 아는 사람이 있습니까? 계속해서 스크립트를 다시 작성하려고 노력하고 새 스크립트를 만들 때 더 많은 문제가 계속 나타나는 것 같기 때문에 스크립트에서 내용을 다시 작성할 필요가 없습니다.
답변1
하지만 사실은 그렇지 않아요필요중요하긴 한데, 그래, 그렇지할 수 있는어떻게 쓰느냐에 따라 다릅니다. 또한 Bourne 쉘에 대해 작성하는 방법을 알아낼 수 있는 스크립트를 제공하지 않았습니다. 서로 더 잘 호환되는 BASH 버전을 원한다면...
설치하다스스로 만든Mac에서 사용 Terminal.app
하거나iTerm2.app
. Homebrew( )를 사용하여 BASH를 설치합니다 brew install bash
. 그런 다음 Mac에서 쉘을 변경하십시오 chsh -s /usr/local/bin/bash
. 로그아웃하세요. 로그인. 현재 macOS/OS X에서 BASH 4.4를 사용할 수 있으며, 이는 사용 중인 다른 BASH 버전과 훨씬 더 호환됩니다. 이렇게 하면 현재 스크립트를 다시 작성하는 일이 줄어들지는 않지만 새 스크립트의 문제가 거의 확실하게 제거됩니다.
#!/usr/local/bin/bash
Mac 기본 스크립트는 셸을 변경하지 않고도 사용할 수도 있습니다 .
Homebrew에서 소프트웨어를 컴파일하려면 Xcode를 설치해야 할 수도 있습니다. App Store에서 Xcode를 설치한 후 이 작업을 수행하지 않은 경우 Xcode의 명령줄 도구를 설치하세요 xcode-select --install
.