2013-07-20 5 views
0

저는 초보자 인 리눅스 사용자입니다.이 문제가 발생했습니다.

다음 명령은 내가 $*의 가치를 찾아 낼 방법

set 10 20 30 40 50 
shift 
shift 

를 실행 한 경우? bash 매뉴얼 페이지에서

+0

"가치 발견"이란 무엇을 의미합니까? –

+0

미안하지만, "찾기"보다는 오히려 "$ *의 값을 입력하십시오." 기본적으로 실행 된 명령을 알아 내고 싶습니다. $ *의 값을 가져와야합니다. – user2601569

+0

나는 아직도 이해하지 못한다. '$ *'라고 표시된 명령어가'30 40 50' 일뿐입니다. –

답변

0

:

set 다음 옵션을 처리 한 후 남아있는 인자 위치 매개 변수에 대한 값으로 처리하고 $1, $2에 위해 할당된다. .. $n.

그리고 :

shift [n] : n이 주어지지 않으면 n+1 ...에서 위치 매개 변수는 에게 ... $#-n+1이 해제되어 아래로 숫자 $#에 의해 표현 $1 .... 매개 변수로 이름이 변경

개 그래서 set 세트 :

$1 = 10 
$2 = 20 
$3 = 30 
$4 = 40 
$5 = 50 

그리고 다음 shift 명령 $1을 버리고 하나 다른 $n 변수를 섞는다. 당신은 두 번을, 그래서 당신을 잎 :

$1 = 30 
$2 = 40 
$3 = 50 

당신은 바로 사용할 수 있습니다 echo $*를 출력 참조 :

30 40 50 
0

의 약간 이상한 ..... 문제는 말한다, 값을 $ *의 의미는 ... 명령에 포함 된 모든 것을 의미하므로 posistional 매개 변수로 전달됩니다.

shift 명령은 원래 명령 줄에서 한 곳 왼쪽에있는 모든 것을 밀어 넣을 것입니다. 그래서 10 20 30 40 50 ..... 두 개의 sahifts (2 번 왼쪽으로 밀기) 후 (30) (40) (50)는 지금은 .... 자신의 위치/$ (1)와 같은 $로 선두로부터 ... $ 2

$ set 10 20 30 40 50 
$ shift 2 
$ echo $* 
30 40 50 

는 간단히 말해을 지정하여

개별 값에 액세스하려면

를 액세스 할 수있다 .... 그냥 $ 1, $ 2를 사용하십시오. 현명한 것 같이, $ 1은 30, $ 2는 40이됩니다.

당신이 얼마나 많은 매개 변수를 사용하고 있는지 알고 싶습니까? # #

$ echo $# 
3 

이 것이 도움이됩니까?그것은 메아리,

echo $* 

을 같이 세 가지 단계를 감안할 때 :

30 40 50 

따옴표없이 $*의 값은이다

2

$*의 가치를 찾을 수있는 가장 간단한 방법은 에코하는 것입니다 [email protected]의 값과 따옴표가없고 쉘 스크립트에 대한 모든 위치 지정 인수 또는 표시 한 것과 같은 set 명령에 의해 설정된 값으로 구성됩니다 (이후에서 수정 됨).명령). 둘 사이에 큰 따옴표를 사용하면 "$*"은 모든 위치 매개 변수가 포함 된 단일 문자열을 나타내지 만 "[email protected]"은 위치 매개 변수와 동일한 여러 문자열을 나타냅니다. 보다 일반적으로 올바른 형식입니다. 어떤 변화없이

set -- 10 '20 30' ' 40 50 ' 

한 다음 사용 : 당신이 사용하는 경우

printf "%s\n" $* 
printf "%s\n" "$*" 
printf "%s\n" [email protected] 
printf "%s\n" "[email protected]" 

당신은 그들에 더 많은 통찰력을 얻을 것 :

당신은 printf 명령과 함께 이러한 양식의 차이를 볼 수 있습니다 4 printf 명령 :

printf "X%sX\n" $* 
printf "X%sX\n" "$*" 
printf "X%sX\n" [email protected] 
printf "X%sX\n" "[email protected]" 

는 X의 봉사 인쇄 된 값의 시작과 끝을 표시합니다. 출력은 :

X10X 
X20X 
X30X 
X40X 
X50X 
X10 20 30 40 50 X 
X10X 
X20X 
X30X 
X40X 
X50X 
X10X 
X20 30X 
X 40 50 X 

배시 매뉴얼의 관련 섹션 special parameters이다.