$1
첫 번째 주장입니다.
$@
그들 모두입니다.
쉘 스크립트에 전달 된 마지막 인수를 어떻게 찾을 수 있습니까?
답변
이것은 약간의 해킹입니다.
for last; do true; done
echo $last
이것은 또한 이식성이 뛰어나며 (다시 말해서, bash, ksh 및 sh와 함께 작동해야 함) 인수를 이동시키지 않으므로 멋질 수 있습니다.
for
루프 오버 대상을 알려주지 않으면 인수 를 암시 적으로 반복한다는 사실과 루프 변수의 범위가 지정되지 않았다는 사실을 사용합니다. 설정된 마지막 값을 유지합니다.
답변
이것은 배쉬 전용입니다.
echo "${@: -1}"
답변
$ set quick brown fox jumps
$ echo ${*: -1:1} # last argument
jumps
$ echo ${*: -1} # or simply
jumps
$ echo ${*: -2:1} # next to last
fox
이것은 bash 전용입니다.
답변
bash 3.0 이상에 대한 가장 간단한 대답은
_last=${!#} # *indirect reference* to the $# variable
# or
_last=$BASH_ARGV # official built-in (but takes more typing :)
그게 다야.
$ cat lastarg
#!/bin/bash
# echo the last arg given:
_last=${!#}
echo $_last
_last=$BASH_ARGV
echo $_last
for x; do
echo $x
done
출력은 다음과 같습니다
$ lastarg 1 2 3 4 "5 6 7"
5 6 7
5 6 7
1
2
3
4
5 6 7
답변
길이와 결합 된 인덱싱을 사용하십시오.
echo ${@:${#@}}
이것은 bash 전용입니다.
답변
다음은 당신을 위해 일할 것입니다. @는 인수 배열입니다. : 의미합니다. $ #는 인수 배열의 길이입니다. 결과는 마지막 요소입니다.
${@:$#}
예:
function afunction{
echo ${@:$#}
}
afunction -d -o local 50
#Outputs 50
이것은 bash 전용입니다.
답변
마지막 인수를 이전의 모든 인수와 분리하려고 할 때 이것을 찾았습니다. 일부 답변은 마지막 인수를 얻지 만 다른 모든 인수가 필요한 경우 큰 도움이되지 않습니다. 이것은 훨씬 잘 작동합니다.
heads=${@:1:$#-1}
tail=${@:$#}
이것은 bash 전용입니다.
