반응형
bash에서 $@에서 첫 번째 요소 제거
스크립트에 전달된 인수를 루프할 필요가 있는 bash 스크립트를 쓰고 있습니다.단, 첫 번째 인수는 루프오버하지 말고 루프 전에 체크해야 합니다.
첫 번째 요소를 제거할 필요가 없다면 다음을 수행할 수 있습니다.
for item in "$@" ; do
#process item
done
루프를 수정하여 첫 번째 반복인지 확인하고 동작을 변경할 수 있지만 너무 해킹적인 것 같습니다.첫 번째 주장을 추출하고 나머지를 반복할 수 있는 간단한 방법이 있을 텐데, 난 그걸 찾을 수 없었어.
를 사용합니다.
읽어주세요$1
루프 전 첫 번째 인수(또는$0
스크립트명을 확인하고 싶은 경우는,shift
그 후 나머지 부분을 루프합니다.$@
.
다른 변형에서는 배열 슬라이싱을 사용합니다.
for item in "${@:2}"
do
process "$item"
done
이것은 어떤 이유로 인해 인수를 그대로 두고 싶은 경우에 도움이 될 수 있습니다.shift
파괴적입니다.
firstitem=$1
shift;
for item in "$@" ; do
#process item
done
q=${@:0:1};[ ${2} ] && set ${@:2} || set ""; echo $q
편집
> q=${@:1}
# gives the first element of the special parameter array ${@}; but ${@} is unusual in that it contains (? file name or something ) and you must use an offset of 1;
> [ ${2} ]
# checks that ${2} exists ; again ${@} offset by 1
> &&
# are elements left in ${@}
> set ${@:2}
# sets parameter value to ${@} offset by 1
> ||
#or are not elements left in ${@}
> set "";
# sets parameter value to nothing
> echo $q
# contains the popped element
일반 배열을 사용한 팝의 예시
LIST=( one two three )
ELEMENT=( ${LIST[@]:0:1} );LIST=( "${LIST[@]:1}" )
echo $ELEMENT
언급URL : https://stackoverflow.com/questions/2701400/remove-first-element-from-in-bash
반응형
'programing' 카테고리의 다른 글
Microsoft를 사용하여 .xlsx로 내보내기Office.Interop.Excel SaveAs 오류 (0) | 2023.04.12 |
---|---|
Get-ChildItem 재귀 깊이 제한 (0) | 2023.04.12 |
bash는 함수의 정의를 표시할 수 있습니까? (0) | 2023.04.12 |
WPF의 Windows 7 테마 (0) | 2023.04.12 |
Postgresql에서 두 열의 조합에 대해 고유한 강제 적용 (0) | 2023.04.12 |