나는 이것을 설명하겠다. 설명해 보자 ...bash 스크립트에서 문자열 변수의 이상한 행동 ... 도와주세요!
나는 3 개의 인수를받는 함수를 가진 아주 간단한 Bash 스크립트를 가지고있다. 그 인수는 모두 문자열입니다. 모든 것은 함수에 공백이있는 문자열을 전달해야 할 때까지 제대로 작동했습니다.
또한 (이름 substracFromFile) 함수를 호출하는 몇 가지 테스트 코드를 가지고 :
# try the function
PATTERN=`echo -e '<Location test14>'`
echo "PATTERN IS $PATTERN"
HEADERPATTERN=`echo -e '<Location [a-zA-Z0-9]*>'`
echo "HEADERPATTERN IS $HEADERPATTERN"
FILE="subversion.conf"
echo "FILE IS $FICHERO"
substracFromFile $PATTERN $HEADERPATTERN $FILE
이의 출력은 다음과 같습니다
인수가 전달된다PATTERN IS <Location prueba14>
HEADERPATTERN IS <Location [a-zA-Z0-9]*>
FILE IS subversion.conf
PATTERN ARGUMENT IS <Location
HEADERPATTERN ARGUMENT IS prueba14>
FILE ARGUMENT IS <Location
grep: <Location: No such file or directory
expr: syntax error
당신이 볼 수 있듯이, 함수에 그리고 나는 그것들을 화면에 에코하여 어떻게해서든지 흰 공백으로 나뉘 었습니다 ... 함수 초기 코드를 보여 드리겠습니다 :
function substracFromFile
{
PATTERN=$1
HEADERPATTERN=$2
FILE=$3
# Debug only
echo "HEADER ARGUMENT IS $PATTERN"
# Debug only
echo "HEADERPATTERN ARGUMENT IS $HEADERPATTERN"
# Debug only
echo "FILE ARGUMENT IS $FILE"
전달 된 문자열에 공백이 전혀없는 한이 작업은 매우 효과적이었습니다. 함수 문자열을 호출 할 때 ok로 보이지만 함수가 호출되면 왜 분할되는지 이해할 수 없습니다 ....이게 뭔가 지저분한 것이라고 확신하지만 그냥 이해가 안됩니다. . 사전에
감사합니다, 질문의 알렉스
모든 변수에 큰 따옴표를 추가하십시오. – ghostdog74