다음 쉘 스크립트를 확인하십시오.
#!/bin/bash
check=yes
if [[ $check =~ yes|no ]]; then
echo yes or no.
else
echo I did not understood the pattern.
fi
내 OSX에서 실행하면 모든 것이 예상대로 작동합니다. yes or nor.
메시지를 남겨주세요 . 하지만 Ubuntu 14.04.5 LTS 서버에서 실행할 때 오류가 발생합니다.
teste.sh: 3: teste.sh: [[: Permission denied
teste.sh: 3: teste.sh: no: Permission denied
I did not understood the pattern.
OSX 및 Ubuntu 쉘 버전이 확인되었습니다. OSX는 이전 쉘 버전을 제공합니다.
[email protected]:/tmp/>$SHELL --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.
우분투에서는:
t4h@web129:~$ $SHELL --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 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.
나에게 쉘 정보는 별로 도움이 되지 않습니다.
모든 *nix 시스템에서 동일하게 실행되고 다른 셸 버전과 호환되는 셸에서 정규식을 확인하는 다른 방법이 있습니까?
답변1
이것은 인터프리터로 사용해야 하는 스크립트입니다 bash
.bash
를 사용하여 실행할 때는 sh
을 사용하지 않습니다 bash
. 예, 일부는 sh
실제로 bash
위장되어 있지만 중요하지 않습니다( bash
모든 경우에 "정상"처럼 작동하지는 않습니다). sh
and를 마치 and bash
인 것처럼 상호 배타적인 통역사로 취급합니다 (즉, 이들을 섞으려고 하지 마십시오).perl
python
스크립트 실행
$ bash teste.sh
또는 실행 가능하게 만들고 직접 실행하십시오.
$ chmod +x teste.sh
$ ./teste.sh
마지막 접근 방식이 더 나을 수도 있습니다. 이를 통해 스크립트는 #!
어떤 인터프리터를 사용해야 하는지 -line을 통해 결정할 수 있습니다.