Parse command-line arguments: Difference between revisions
Content added Content deleted
(Added Kotlin) |
(Added nim implementation.) |
||
Line 295: | Line 295: | ||
return 0; |
return 0; |
||
}</lang> |
}</lang> |
||
=={{header|Nim}}== |
|||
<lang nim>import os |
|||
import parseopt |
|||
proc main = |
|||
# Directly accessing the app name and parameters |
|||
echo "app name: ", getAppFilename().extractFilename() |
|||
echo "# parameters: ", paramCount() |
|||
for ii in 1 .. paramCount(): # 1st param is at index 1 |
|||
echo "param ", ii, ": ", paramStr(ii) |
|||
echo "" |
|||
# Using parseopt module to extract short and long options and arguments |
|||
var argCtr : int |
|||
for kind, key, value in getOpt(): |
|||
case kind |
|||
of cmdArgument: |
|||
echo "Got arg ", argCtr, ": \"", key, "\"" |
|||
argCtr.inc |
|||
of cmdLongOption, cmdShortOption: |
|||
case key |
|||
of "v", "n", "z", "w": |
|||
echo "Got a \"", key, "\" option with value: \"", value, "\"" |
|||
else: |
|||
echo "Unknown option: ", key |
|||
of cmdEnd: |
|||
discard |
|||
main() |
|||
</lang> |
|||
Sample command line: |
|||
<pre> |
|||
parsecmdline ab -z cd ef -w=abcd --w=1234 -v -e -x 1-1000 |
|||
</pre> |
|||
Output: |
|||
<pre> |
|||
app name: parsecmdline |
|||
# parameters: 10 |
|||
param 1: ab |
|||
param 2: -z |
|||
param 3: cd |
|||
param 4: ef |
|||
param 5: -w=abcd |
|||
param 6: --w=1234 |
|||
param 7: -v |
|||
param 8: -e |
|||
param 9: -x |
|||
param 10: 1-1000 |
|||
Got arg 0: "ab" |
|||
Got a "z" option with value: "" |
|||
Got arg 1: "cd" |
|||
Got arg 2: "ef" |
|||
Got a "w" option with value: "abcd" |
|||
Got a "w" option with value: "1234" |
|||
Got a "v" option with value: "" |
|||
Unknown option: e |
|||
Unknown option: x |
|||
Got arg 3: "1-1000" |
|||
</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |