bash의 문자열 비교입니다.[[: 찾을 수 없음]
bash의 문자열을 비교하려고 합니다.저는 이미 스택 오버플로 시 어떻게 해야 하는지에 대한 답을 찾았습니다.제가 시도하고 있는 스크립트에서, 저는 언급된 질문에 아담이 제출한 코드를 사용하고 있습니다.
#!/bin/bash
string='My string';
if [[ "$string" == *My* ]]
then
echo "It's there!";
fi
needle='y s'
if [[ "$string" == *"$needle"* ]]; then
echo "haystack '$string' contains needle '$needle'"
fi
두 번째 게시물에서 찾을 수 있는 unbu 포럼의 접근법도 시도했습니다.
if [[ $var =~ regexp ]]; then
#do something
fi
두 경우 모두 오류가 표시됩니다.
[[: not found
내가 뭘 잘못하고 있는 거지?
[[
배시 내장형입니다.당신의./bin/bash
실제 공격은 아닌 것 같습니다.
댓글에서:
더하다#!/bin/bash
파일 맨 위에
스크립트를 어떻게 실행하고 있습니까?만약 당신이 그것을 했다면.
$ sh myscript
시도해야 합니다.
$ bash myscript
또는 스크립트가 실행 가능한 경우:
$ ./myscript
sh와 bash는 두 개의 다른 껍질입니다.첫 번째 경우에는 스크립트를 인수로 sh 인터프리터에 전달하는 반면, 두 번째 경우에는 사용할 인터프리터의 첫 번째 줄을 결정합니다.
스크립트의 첫 번째 줄은 다음과 같습니다.
#!/bin/bash
또는
#!/bin/sh
sh 셸은 bash가 아닌 이 오류 메시지를 생성합니다.
@Ansgar가 언급했듯이,[[
바시즘입니다. 즉, 바시에 내장되어 있으며 다른 셸에는 사용할 수 없습니다.스크립트를 휴대용으로 사용하려면[
비교에는 다른 구문도 필요합니다. 변경==
로.=
.
if [ $MYVAR = "myvalue" ]; then
echo "true"
else
echo "false"
fi
Heroku Toolbelt를 설치할 때 문제가 발생했습니다.
이것이 제가 그 문제를 해결한 방법입니다.
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 ago 15 2012 /bin/sh -> dash
보시다시피 /bin/sh는 "대시"(배시가 아님)에 대한 링크입니다.[[
바쉬 통사적인 달콤함입니다.그래서 저는 /bin/bash에 대한 링크를 교체했습니다.당신의 시스템에서 이렇게 rm을 사용하는 것을 조심하세요!
$ sudo rm /bin/sh
$ sudo ln -s /bin/bash /bin/sh
bash 중이라는 것을 알고도 여전히 이 오류가 발생하면 if를 공백으로 작성해야 합니다.
[[1==1]] # This outputs error
[[ 1==1 ]] # OK
스크립트를 실행할 때 sh 대신 bash를 지정합니다.개인적으로 Ubuntu 12.10에서는 차이가 있다는 것을 알게 되었습니다.
bash script.sh arg0 ... argn
터미널에서 실행:
sudo update-alternatives --install /bin/sh sh /bin/bash 100
파일을 실행 파일로 만든 다음 sh 없이 실행합니다.
- $ chmod +x 파일 이름으로 실행 가능하게 합니다.
- 그런 다음 sh 파일 이름 대신 ./filename을 사용합니다.
언급URL : https://stackoverflow.com/questions/12230690/string-comparison-in-bash-not-found
'source' 카테고리의 다른 글
경고:동일한 종속 어셈블리의 서로 다른 버전 간에 충돌이 발견되었습니다. (0) | 2023.05.24 |
---|---|
Azure 함수 - "초기화된 언어 작업자를 찾지 못했습니다." (0) | 2023.05.24 |
Angular 구성 요소와 모듈의 차이점은 무엇입니까? (0) | 2023.05.24 |
기본 스타일을 기반으로 스타일을 만드는 방법은 무엇입니까? (0) | 2023.05.09 |
Mongodb native nodejs 드라이버에 컬렉션이 있는지 확인하는 방법은 무엇입니까? (0) | 2023.05.09 |