셸 프로그램에 주어진 마지막 두 번째 항목을 가져 오려고합니다. 현재 내가 이런 식으로 작업을 수행합니다쉘 스크립트에서 두 번째 마지막 인수를 얻는 방법은 무엇입니까?
file1_tmp="${@: -2}"
oldIFS=$IFS
IFS=" "
count=0
for value in $file1; do
if [[ count -e 0 ]]; then
file1=$value
fi
count=1
done
oldIFS=$IFS
내가이 일을 훨씬 더 쉬운 방법이 있음을 확신한다. 그렇다면 쉘 스크립트 입력에서 가능한 한 적은 수의 행으로 두 번째 마지막 인수를 얻으려면 어떻게해야합니까?
당신이 평가를 사용할 수있다 셸 zsh에서 작동하지만'$ {@ [- 2]}'는 않습니다. –
이 답변의 인용문은 zsh에서는 맞지만 POSIX 호환 쉘 (bash 또는 ksh 등)에서는 잘못되었습니다. –
이것은 Bourne에서 eval없이 수행 될 수 있습니다 - 예를 들어, 함수 내에서 args를 이동하는 것 :'penultimate() {while [ "$ #"-gt 2]; 교대를해라. 끝난; printf '% s \ n ""$ 1 "; }; 끝에서 두 번째 "$ @"' –