Lua 언어에서 명령행 인자는 변수 arg로 처리한다. 즉, arg는 Lua 언어에서 하나의 (명령행 인자 처리 변수) 예약어인 셈이다. 이 변수는 명령행 실행시 옵션으로 입력된 인자들을 스트링 값으로 모아둔 리스트 타입의 변수이다. 이 변수가 가리키는 리스트에 속한 아이템의 개수를 구하기 위해서는 전위 단항연산자 #을 선두에 붙이면 된다. 즉 #arg가 리스트에 속한 (아이템의 개수)-1이다. 그런데 Lua 언어에서는 Python 언어에서 처럼, 명령행 실행시 실행될 소스파일명의 인덱스 번호가 0번이므로, 아래의 소스 코드에서 우리가 처리할 명령행 인자들은 1번, 2번, 3번, .... 의 인텍스 번호를 갖는다.
(참고로, Lua 언어의 신택스는 테이블 타입의 자료 처리를 기반으로 하고 있으며, 리스트 타입이라고 하는 것도 실제로는 특수한 테이블 타입 중 하나인 셈이다.)

Lua 언어에서 줄 단위 주석문 기호는 --이다. 소스 코드의 어느 줄이든 -- 및 그 우측 부분은 모두 주석으로 처리된다. 이 기호는 Python/Ruby 언어의 줄 단위 주석문 기호 #에 해당하며, C/C++/Java/Groovy 언어의 줄 단위 주석문 기호 //에 해당한다.



소스 파일명: testArguments.lua
  1. -- 명령행 인자(command-line argument) 개수 출력
  2. print( "Count of arguments: " .. #arg )
  3. sum = 0.0
  4. for i = 1, #arg do
  5.     -- 스트링을 부동소수점수로 변환하여 누적
  6.     sum = sum + tonumber(arg[i])
  7. end
  8. -- 누적된 값을 출력
  9. print( "The sum of arguments is " .. sum)


실행> lua testArguments.lua 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> lua testArguments.lua 1 2 3 4.5
Count of arguments: 4
The sum of arguments is 10.5





Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,
Ruby 언어에서는 명령행 인자를 처리하는 변수로 ARGV를 미리 지정하여 놓았다.


소스 파일명: testArguments.rb
  1. # 명령행 인자(command-line argument) 개수 출력
  2. print("Count of arguments: #{ARGV.length}\n")
  3. sum = 0.0
  4. for i in 0...ARGV.length
  5.     # 스트링을 부동소수점수로 변환하여 누적
  6.     sum += ARGV[i].to_f
  7. end
  8. # 누적된 값을 출력
  9. print("The sum of arguments is %g\n" % sum)


실행> ruby testArguments.rb 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> ruby testArguments.rb 1 2 3 4.2
Count of arguments: 4
The sum of arguments is 10.2


※ 위의 소스 코드는 JRuby로도 수정 없이 그대로 실행된다.

실행> jruby testArguments.rb 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> jruby testArguments.rb 1 2 3 4.2
Count of arguments: 4
The sum of arguments is 10.2





Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,

Python 언어에서 명령행 인자는 sys.argv 라는 변수로 처리한다.
sys.argv는 모듈 sys에 속하는 변수 argv를 의미하며, 이는 명령행 실행시 옵션으로 입력된 인자들을 스트링 값으로 모아둔 리스트형의 변수이다.
모듈 sys을 하기 위해서는

        import sys

라는 수입(import) 구문을 소스 선두 부분에 적어주어야 한다.

C/C++/Java/Ruby 언어들과는 달리 리스트의 0번의 값(즉 sys.argv[0])은 python 명령 바로 다음에 입력된 (실행될) Python 소스파일명을 가리키므로, 1번부터 처리해야 한다. 즉 Python 언어에서 sys.argv[1], sys.argv[2], sys.argv[3], ... 들이 각각 C 언어의 argv[0], argv[1], argv[2], .... 들에 해당하며, Java 언어의 args[0], args[1], args[2], ... 들에 해당한다.

다음 소스의 앞 부분에

    #! /usr/bin/python
    # -*- encoding: euc-kr -*-

를 적어둔 것은 소스 코드에서 (주석문에) ASCII 가 아닌 문자(여기서는 한글 euc-kr)를 소스 코드에서 사용하고 있기 때문이다. 이 두 줄은

    #! /usr/bin/python
    # coding: euc-kr

으로 하여도 된다. 만일 소스 코드 파일을 utf-8 인코딩으로 저장하였다면 euc-kr 대신 utf-8로 하여야 할 것이다. (참고로, Ubuntu 플랫폼에서는 소스파일 저장시 반드시 utf-8 인코딩으로 저장하여야 한다.)


소스파일명: testArguments.py

  1. #!/usr/bin/python
  2. # -*- encoding: euc-kr -*-
  3. import sys
  4. # 명령행 인자(command-line argument) 개수 출력
  5. print "Count of arguments: %d" % (len(sys.argv)-1)
  6. sum = 0.0
  7. for i in range(1, len(sys.argv)):
  8.     # 스트링을 부동소수점수로 변환하여 누적
  9.     sum += float(sys.argv[i])
  10. # 누적된 값을 출력
  11. print "The sum of arguments is %g" % sum


실행> python testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> python testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1


※ 위의 소스 코드는 Jython으로도 수정 없이 그대로 실행된다.

실행> jython testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> jython testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1


※ 위의 소스 코드는 IronPython으로도 수정 없이 그대로 실행된다.

실행> ipy testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> ipy testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1




Posted by Scripter
,