"22 행 : 우분투 서버에 너무 많은 인수가 있습니다."오류가 발생하며 수정 방법이 너무 명확하지 않습니다. 그냥 궁금해 거기에 대한 해결책은 무엇입니까? 여기 내 코드가있다.우분투 서버에 인수가 너무 많습니다.
if [ $? -eq 0 ]; then
if [ $name = $ufname ]; then
echo "Names are still the same"
fi
fi
"22 행 : 우분투 서버에 너무 많은 인수가 있습니다."오류가 발생하며 수정 방법이 너무 명확하지 않습니다. 그냥 궁금해 거기에 대한 해결책은 무엇입니까? 여기 내 코드가있다.우분투 서버에 인수가 너무 많습니다.
if [ $? -eq 0 ]; then
if [ $name = $ufname ]; then
echo "Names are still the same"
fi
fi
공백이나 다른 특수 문자가 포함 된 변수에는 매우주의해야합니다. 공백은 실제로 작품을 장식 할 수 있습니다.
bash의 가장 좋은 해결책은 [
대신 [[
을 사용하는 것입니다. 우아하고 스타일있는 공백을 처리합니다. 모든 경우에 [[
으로 전환하고 [
을 사용하지 않는 것이 좋습니다. 휴대 성이 필요한 경우 [
를 사용하는 [[
is better in all respects.
if [[ $? -eq 0 ]]; then
if [[ $name = "$ufname" ]]; then
echo "Names are still the same"
fi
fi
유일한 이유는 - 당신이 일반 쉬보다는 떠들썩한 파티를 위해 작성하는 경우처럼. 이 경우 [
을 사용해야하므로 변수를 인용해야합니다.
if [ $? -eq 0 ]; then
if [ "$name" = "$ufname" ]; then
echo "Names are still the same"
fi
fi
나는 그것을 시도했지만 작동하지 않는 것 같습니다. 결과가 표시되지 않습니다. –
그건 별개의 문제입니다. 아마'$? '가 0이 아니거나 아마도이 두 변수가 실제로 같지 않을 수도 있습니다. 확인을 위해 인쇄물을 넣으십시오. –
그건 그렇고, 내가하고있는 목적은 텍스트 파일의 이름을/etc/passwd의 이름과 일치시키는 것입니다. 이 작업을 수행 할 대체 방법이 있습니까? –
$ 이름 또는 $ ufname이 포함될 수 있습니다 공간 – tristan
** ** 당신의 문자열 변수를 견적도 빈 문자열에 방지하기 위해 접두사 추가 :'[ "Z의 $ {이름}"= "Z의 $ {ufname을} "]'. 보통 '빈 문자열/단위화된'과 '이름의 공간'문제를 처리합니다. –
인용구로 빈 문자열도 처리 할 수 있다고 생각했습니다. bash는 placeholder 빈 문자열 인수를'['. 권리? – anishsane