
중복되지 않음질문.
요소가 1,0,0인 배열에서 semvar 패턴(1.0.0)을 만들고 git 태그를 만들려고 합니다 git tag $var
.
오류:- 위의 솔루션은 작동하지 않고 공간을 분리 .
하여 제공합니다 1 0 0
.
4 13 0
fatal: too many params
git tag 명령에 오류가 발생했습니다.
접근하다:-
var=$( IFS=$'.'; echo "${versionArray[*]}" )
echo $var
git tag $var
더 좋은 방법을 제안해주세요.
답변1
echo $var
내 생각 엔 실행 하고 git tag $var
사용하는 쉘입니다 IFS=.
. Note는 var=$(IFS=.;…)
현재 셸에서 변수 값을 변경할 수 없으므로 이 예상치 못한 설정은 IFS
아마도 일부 시행착오 중에 더 일찍 설정되었을 것입니다.
내 말이 맞다면, 이름이 붙은 변수는 var
예상 값을 점으로 표시합니다(예: ) 1.0.0
. 하지만 이렇게 검색하면
echo $var
현재는 단어로 분할하는 데 사용되므로 , , IFS
3 개의 별도 인수를 받습니다 . 그리고 그 사이에 단일 공백을 사용하여 인수를 인쇄하기 때문에 was 의 값이 인상 깊었습니다 .1.0.0
echo
1
0
0
echo
var
1 0 0
이 줄
echo "$var"
에 의존하지 않습니다 IFS
. 나는 그것이 당신에게 보여줄 것이라고 기대합니다 1.0.0
.
일반적인 해결책은 변수를 큰따옴표로 묶는 것입니다. 너어쨌든 했어야 했어:
echo "$var"
git tag "$var"
또한 주의하세요 IFS
. 이제 echo $IFS
변수가 무엇인지 보여주지 않는다는 것이 분명해졌습니다 . echo "$IFS"
더 나은. 또한 다음 방법도 유용합니다.
printf '%s' "$IFS" | hexdump -c
printf '%s' "$IFS" | hexdump -C
printf '%s' "$IFS" | xxd