2011-10-05 3 views
0

0 개 이상의 arugments를 인쇄하고 마지막 arugment를 인쇄하는 bourne shell 스크립트를 만들려고 노력하고 있습니다. 저는 Java와 IM을 매우 혼란스럽게 작성하는데 익숙합니다. 천천히 배우기 시작합니다. C.Bourne Shell 마지막 인수를 인쇄하는 스크립트

배쉬에서
+0

"Bourne shell"(제목 당) 또는 "Bourne Again Shell (bash)"(태그 당)? – Johnsyweb

+1

0 인수가 전달되면 마지막 인수를 어떻게 인쇄합니까? –

+0

그냥 아무것도 돌려 보내야합니다. – BeagleBoy360

답변

2
lastArg=`echo [email protected] | awk '{print $NF}'` 
+0

#!/bin/sh 읽기 args echo "Enter args : $ args" 세트 $ args lastArg ='echo $ @ | awk '{print $ NF}' ' echo $ lastArg' – BeagleBoy360

+0

@ BeagleBoy360 -이 주석은 당신이 그것을 얻는다 고 말하는가? 아니면 뭔가 수정하고 있습니까? – jdi

0

는 :

last_arg=`echo $* | rev | cut -d " " -f1 | rev`; 
echo $last_arg 

귀하의 질문은 C에서 C. 언급은 쉽게 : 여기

int main (int argc, char *argv[]) { 
    char *last_arg = argv[argc - 1]; 
    [...] 
} 
+0

#!/bin/sh 인수 읽기 echo "Enter args : $ args" last_arg ='echo $ * | rev | cut -d ""-f1 | 회전 "; echo $ last_arg – BeagleBoy360

2

#!/usr/bin/env bash 

echo "${!#}" 

이, 비록 Bourne 쉘 스크립트되지 않습니다 : 그것을 할 것입니다 짧은 배쉬 스크립트입니다. arg는 키보드에서 read 명령으로 읽지 않습니다. 대신 스크립트를 실행할 때 명령 줄에 제공됩니다. 당신이 script.sh에서이 텍스트를 넣어 ./script.sh a b c d e를 실행하는 경우 예를 들어, 인쇄됩니다 :

e 
+0

한 번에이 질문에 "bash"라는 태그가 붙어 있다는 것을 알아야합니다. –

3

대안을 @ 마이클의 솔루션 :

#!/usr/bin/env bash 
echo "${@: -1}" 
  • [email protected] 모든 매개 변수를 사용하여 배열입니다.
  • :
  • 은 일반적으로 문자열을 분할하는 데 사용됩니다 (당신은 사용자 이름의 마지막 문자를 인쇄 있는지 확인 echo "${USER: -1}" 이것을 시도 할 수 있습니다)뿐만 아니라 지난 요소를 얻을 수 배열에 사용할 수 있습니다.
  • 배열 인덱싱이 작동하려면 중괄호가 필요합니다.
  • 따옴표는 다른 변수를 혼합하려는 경우 코드를보다 융통성있게 만들거나 문구에 값을 사용해야하는 경우에 사용하는 것이 좋습니다. 이 작업을해야하는
0

(예 : if [ "${@: -1}" = "--help" ]에 대한) 매개 변수가없는 경우 빈 문자열이 아닌 아무것도 필요 :

eval lastarg='$'$# 
echo last arg is $lastarg 

을이 /bin/shbash 또는인 작동.

무엇이든간에 "진짜"/bin/sh으로 테스트 할 수 없습니다.

관련 문제