Bash 기술: shift 내 장 된 명령 을 사용 하여 이전 명령 매개 변 수 를 왼쪽으로 이동 합 니 다.
$1
들 어 오 는 첫 번 째 매개 변수 에 대응 하고 $2
들 어 오 는 두 번 째 매개 변수 에 대응 합 니 다.순서대로 유추 하 다.위치 매개 변 수 를 바 꾸 기 위해 서
shift
내 장 된 명령 을 사용 할 수 있 습 니 다.예 를 들 어 shift 1
명령 을 실행 하면 $1
들 어 오 는 두 번 째 매개 변수 에 대응 하고 $2
들 어 오 는 세 번 째 매개 변수 에 대응 합 니 다.순서대로 유추 하 다.man bash 가
shift
명령 에 대한 설명 은 다음 과 같 습 니 다.shift [n]
The positional parameters from n+1 ... are renamed to
$1
.... Parameters represented by the numbers $#
down to $#-n+1
are unset. n must be a non-negative number less than or equal to
$#
. If n is 0, no parameters are changed. If n is not given, it is assumed to be 1. If n is greater than
$#
, the positional parameters are not changed. The return status is greater than zero if n is greater than
$#
or less than zero; otherwise 0. 즉,
shift
명령 은 주어진 n 매개 변수 값 을 바탕 으로 위치 매개 변 수 를 바 꾸 는 것 이다.$1
이름 을 $n+1
로 바 꿉 니 다.$2
이름 을 $n+2
로 바 꿉 니 다.뒤의 매개 변 수 는 이런 식 으로 유추 된다.n 개의 위치 변 수 를 왼쪽으로 이동 하 는 것 과 유사 합 니 다.n 인자 가 제공 되 지 않 으 면 기본 값 은 1 입 니 다.주어진 n 은 0 보다 크 거나 같은 정수 여야 합 니 다.
shift
명령 의 매개 변 수 는 음수 일 수 없 기 때문에 이 명령 을 실행 하여 위치 매개 변 수 를 바 꾼 후 이 명령 을 사용 하여 원래 의 위치 매개 변수 로 복원 할 수 없습니다.shift
명령 을 실행 하면 $#
의 값 은 남 은 매개 변수 개수 로 업데이트 되 고 $@
남 은 매개 변수 목록 만 가 져 옵 니 다.스 크 립 트 에 들 어 온 매개 변 수 를 스 크 립 트 함수 에 전달 해 야 할 때
shift
명령 을 사용 하여 위치 변 수 를 바 꾸 고 인용 하기 편리 합 니 다.다음은 하나의
testshift.sh
스 크 립 트 로 이 명령 의 용법 을 예 로 들 어 설명 합 니 다. 스 크 립 트 의 내용 은 다음 과 같 습 니 다.#!/bin/bash
reverse=0
function print_params()
{
local string="$@"
if [ $reverse -eq 1 ]; then
echo $string | rev
else
echo $string
fi
}
while getopts "r" opt; do
case $opt in
r) reverse=1 ;;
esac
done
shift $((OPTIND-1))
print_params "$@"
이 스 크 립 트 는
-r
옵션 을 받 을 수 있 습 니 다. 이 옵션 을 제공 하면 rev
명령 으로 문자열 인 자 를 역순 으로 출력 합 니 다.이 옵션 을 제공 하지 않 으 면 문자열 인 자 를 정렬 출력 합 니 다.getopts
명령 으로 옵션 파 라 메 터 를 처리 하면 OPTIND 전역 변 수 는 옵션 매개 변수의 개 수 를 추가 하고 그 값 은 1 부터 시작 합 니 다.$((OPTIND-1))
표현 식 을 사용 하여 제공 하 는 모든 옵션 매개 변수 개 수 를 가 져 올 수 있 습 니 다.예 를 들 어
./testshift.sh -r
명령 을 실행 하고 -r
옵션 인 자 를 제공 합 니 다.이 옵션 의 매개 변 수 를 처리 한 후 OPTIND 의 값 은 2 이 고 1 을 빼 면 옵션 매개 변수의 개수 입 니 다.getopts
명령 을 사용 하여 주어진 옵션 파 라 메 터 를 건 너 뛴 후 shift $((OPTIND-1))
가 져 온 매개 변수 목록 에 옵션 파 라 메 터 를 포함 하지 않 습 니 다.이 옵션 의 매개 변 수 는 print 에 전달 할 필요 가 없습니다.params 함수.
만약 여기에
$@
명령 을 사용 하지 않 고 shift
문장 으로 직접 쓰 면 printparams 함 수 는 들 어 오 는 print_params "$@"
옵션 을 받 을 수 있 으 며, -r
옵션 은 $1
옵션 입 니 다.그러면 함 수 는 이 옵션 을 특수 처리 해 야 합 니 다. 코드 가 세련 되 지 않 습 니 다.즉, 명령 행 인자 의 앞의 몇 개의 인 자 를 건 너 뛰 려 면 그 후의 모든 인 자 를 다른 곳 에 통일 적 으로 전달 하여 사용
-r
명령 을 사용 하 는 것 이 편리 하 다 는 것 이다.그렇지 않 으 면 명령 행 인 자 를 옮 겨 다 니 며 뒤의 모든 매개 변수 값 을 가 져 오고 따로 저장 한 다음 에 전달 해 야 합 니 다. 그러면 귀 찮 습 니 다.실행
shift
스 크 립 트 결 과 는 다음 과 같 습 니 다.$ ./testshift.sh
$ ./testshift.sh -r
이 를 통 해 알 수 있 듯 이
testshift.sh
명령 은 ./testshift.sh -r
옵션 을 제공 하고 주어진 문자열 인 자 를 거꾸로 인쇄 합 니 다.-r
명령 을 사 용 했 기 때문에 이 shift
옵션 은 print 에 전달 되 지 않 았 습 니 다.params 함수 입 니 다. 인쇄 된 내용 은 이 옵션 을 포함 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.