인수로 스크립트를 작성 하시겠습니까?


11

인수를 사용하여 파일에 적용하는 쉘 스크립트를 작성하고 싶습니다.

특히, 용어를 제공하고 mxmlc ( "mxmlc term.as")로 term.as를 컴파일 한 다음 flashplayerdebugger ( "flashplayerdebugger term.swf")를 사용하여 term.swf를 실행합니다. 쉘 스크립팅을 처음 접했습니다. 어떤 생각이 있습니까?


$2첫 번째 인수, $3두 번째 인수 등 입니다. $1파일 이름으로 예약되어 있습니다. 다른 것들에 관해서는, 나는 당신이 무엇을 의미하는지 이해하지 못합니다. 좀 더 잘 설명하거나 의사 코드를 작성해 주시겠습니까?
fouric

1
@InkBlend 당신은 하나 하나 떨어져 있습니다. "$1"첫 번째 주장입니다.
geirha

@geirha : 아야. 그 상처. 물론 그렇습니다. 바보, 나는 파이썬을 생각하고 있었을 것이다.
fouric

답변:


19

다음과 같은 것을 사용할 수 있습니다.

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc $NAME.as
flashplayerdebugger $NAME.swf

1
아니면 건너 뛸 NAME모두 변수를 그냥 사용 mxmlc "$1".as하고 flashplayerdebugger "$1".swf. (인용 부호는 표현 내부에있을 수 있습니다.)
Eliah Kagan

그러나 매개 변수에 공백이 있으면 어떻게됩니까?
Dawid

당신 말이 맞아요 이 오류를 해결하기 위해 내 의견을 편집했습니다.
Eliah Kagan

매개 변수에 공백이 있으면 @shinnra, 다음 nxmlcflashplayerdebugger(가) 하나 개의 인수를 구성하는 대신 여러 인수를 얻을 것이다. 확장은 NAME큰 따옴표로 묶어야합니다. 참고로, 모든 대문자 변수 이름을 사용하지 마십시오. 특수 쉘 변수 또는 환경 변수를 덮어 쓸 위험이 있습니다.
geirha

4

또한 변수 이름 구분 기호를 사용하는 것이 좋습니다. 따라서 코드는 다음과 같습니다.

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc ${NAME}.as
flashplayerdebugger ${NAME}.sw

이를 통해 모든 텍스트, 심지어 다른 텍스트 내에서도 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

NewName="myFileIs${NAME}and that is all"

이렇게하면 "myFileIs"옆에있는 "NAME"변수가 확장되고 뒤에는 "모두"가 표시됩니다. 변수는 문자열 내부에 공백이 포함되어 확장됩니다. 만약 NAME이 "여기 안에"있다면 NewName은 "myFileIsinside hereand that all"입니다.

명령 행은 최대 9 개의 변수를 사용할 수 있습니다. 공백이 포함 된 인용 문자열 일 수 있으며, 인용 된 각 문자열은 변수로 계산됩니다. 같은 :

./myProg var1 var 2 var3

그래서 ${1}이다 "var1", ${2}있다 "var", ${3}있다 "2", ${4}있다"var3"

그러나: ./myProg var1 "var 2" var3

가지고 ${1}있다 "var1", ${2}있다 "var 2", ${3}있다"var3"

즐기세요!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.