저는 초보자 인 리눅스 사용자입니다.이 문제가 발생했습니다.
다음 명령은 내가 $*
의 가치를 찾아 낼 방법
set 10 20 30 40 50
shift
shift
를 실행 한 경우? bash
매뉴얼 페이지에서
저는 초보자 인 리눅스 사용자입니다.이 문제가 발생했습니다.
다음 명령은 내가 $*
의 가치를 찾아 낼 방법
set 10 20 30 40 50
shift
shift
를 실행 한 경우? bash
매뉴얼 페이지에서
:
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
의 약간 이상한 ..... 문제는 말한다, 값을 $ *의 의미는 ... 명령에 포함 된 모든 것을 의미하므로 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
따옴표없이 $*
의 값은이다
$*
의 가치를 찾을 수있는 가장 간단한 방법은 에코하는 것입니다 [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이다.
"가치 발견"이란 무엇을 의미합니까? –
미안하지만, "찾기"보다는 오히려 "$ *의 값을 입력하십시오." 기본적으로 실행 된 명령을 알아 내고 싶습니다. $ *의 값을 가져와야합니다. – user2601569
나는 아직도 이해하지 못한다. '$ *'라고 표시된 명령어가'30 40 50' 일뿐입니다. –