| CARVIEW |
?y getopt ?z?R?}???h?\?\?I?v?V????????͂???i???p?ҁj?FLinux??{?R?}???hTips?i380?j
?{?A?ڂ́ALinux?̃R?}???h?ɂ??āA??{????????I?v?V?????A??̓I?Ȏ??s??܂ł??Љ?Ă????܂??B????́A?V?F???X?N???v?g???ȂǂŃI?v?V????????͂???ugetopt?v?R?}???h?ł??B
???̋L???͉??????ł??B????o?^?i?????j????ƑS?Ă????????????܂??B
?@?{?A?ڂ́ALinux?̃R?}???h?ɂ??āA??{????????I?v?V?????A??̓I?Ȏ??s??܂ł??Љ?Ă????܂??B????́A?A?ڑ?379???ɑ????A?V?F???X?N???v?g???ȂǂŃI?v?V????????͂???ugetopt?v?R?}???h?ł??B
?ڎ?
getopt?R?}???h?̊T?v | ????| ?I?v?V?????ꗗ
???s??
- ?????I?v?V????????͂???
- ?????I?v?V?????Ńn?C?t????1?̏ꍇ?????e????
- ?????t???̒????I?v?V???????g?p????
- ?V?F???X?N???v?g?ʼn??p????i?Q?l?j
getopt?R?}???h?Ƃ́H
?@?ugetopt?v?́A?V?F???X?N???v?g???ȂǂŃI?v?V????????͂???R?}???h?ł??B????̃V?F???X?N???v?g?Łu-a?v?̂悤?ȁu?n?C?t???{?A???t?@?x?b?g1?????v?̃I?v?V???????????ۂɕ֗??ł??B?u-f ?t?@?C?????v?̂悤?Ɉ????????I?v?V????????͂ł??܂??B
?@?悭???????O?ŗp?r???????ugetopts?v?R?}???h?Ƃ͂ǂ????قȂ?̂ł??傤???i?A?ڑ?378???j?B?܂??Agetopts?R?}???h??bash?̃r???g?C???R?}???h?ł??B?????getopts?R?}???h?ł́A?u--?v????n?܂郍???O?I?v?V????????͂ł??܂???B
?@getopt?R?}???h?͊O???R?}???h?i/usr/bin/getopt?j?ł???A?????O?I?v?V?????̉?͂??\?ł??B
?@?Ȃ??Agetopt?́ACentOS 8??Ubuntu 18?ȂǂɎ??^????Ă???GNU?Łiutil-linux?p?b?P?[?W???^?A??1?j?̑??ɁAmacOS?ȂǂɎ??^????Ă???BSD?ł????݂??܂??BBSD?ł?getopt?͋????L?????܂ވ????????܂??????Ȃ??Ƃ?????肪????̂Œ??ӂ??Ă????????i??2?j?Bgetopt?R?}???h?ȊO?̎?i???????????????悢????????܂???B?ȉ??̉????GNU?ŁiCentOS 8?Łj??getopt?R?}???h???g?p???Ă??܂??B
??1 ?ǂ̔ł𗘗p???Ă???̂??ׂ?ɂ́ugetopt --verion?v?????s????B
??2 BSD?ł?man?ɂ́A???̖??̉???????????Ƃ????̂悤?ɋL???Ă???B?uArguments containing white space or embedded shell metacharacters generally will not survive intact; this looks easy to fix but isn't. People trying to fix getopt or the example in this manpage should check the history of this file in FreeBSD.?v
?@???̑??A?I?v?V????????͂???ۂɂ́A??????1???炷?ushift?v?R?}???h???g?????Ƃ??\?ł??B
?R?}???h?̏???
getopt [?I?v?V????] ?I?v?V?????????? ????
getopt [?I?v?V????] -o ?I?v?V?????????? -- ????
getopt [?I?v?V????] -o ?I?v?V?????????? -l ?????I?v?V???? -- ????
?? [ ]?͏ȗ??\?Ȉ??????????Ă??܂??B
getopt?̎?ȃI?v?V????
| ?Z???I?v?V???? | ?????I?v?V???? | ?Ӗ? |
|---|---|---|
| -o ?I?v?V???? | --options ?I?v?V???? | ?I?v?V?????Ƃ??Ďg?p?????????????w?肷??i?{?????Q???j |
| -l ?I?v?V???? | --longoptions ?I?v?V???? | ?????I?v?V?????Ƃ??Ďg?p??????????????w?肷??i-o?ƕ??p?A????????ꍇ?́u,?v?ŋ?邩?u-l?v?I?v?V????????g?p????A?{?????Q???j |
| -a | --alternative | ?P??́u-?v?Ŏn?܂郍???O?I?v?V???????????? |
| -s ?V?F???̎?? | --shell ?V?F???̎?? | ?g?p????V?F?????ush?v?ubash?v?ucsh?v?utcsh?v????w?肷??i?f?t?H???g??bash?A??3?j |
| -n | --name ???O | getopt???g???v???O?????̖??O???w?肷??i?G???[???b?Z?[?W??\??????ۂɎg?p????j |
| -q | --quiet | ?G???[???b?Z?[?W??\?????Ȃ? |
| -Q | --quiet-output | ?ʏ?̏o?͂??ȗ????? |
| -u | --unquoted | ?o?͂ɃN?I?[?g??t???Ȃ? |
??3 ?V?F???ɂ???ăG?X?P?[?v?̏??????قȂ邽?߁Abash?i?f?t?H???g?j?ȊO?̃V?F???X?N???v?g??getopt?R?}???h???g?p????ꍇ?Ɏw?肷??B?Ȃ??Azsh?̏ꍇ?A?uzparseopts?v?R?}???h?iman zshmodules?Q?Ɓj?Œ????I?v?V????????͉\?B
?????I?v?V????????͂???
?@getopt?R?}???h???g???Ē????I?v?V?????i?????O?I?v?V?????j????͂??????ꍇ?́A?ugetopt -o ?I?v?V?????????? -l ?????I?v?V?????????? -- ?????v?̂悤?ɂ??܂??i???1?j?B?????̕????ɉ?͂????????????u???܂??B?????I?v?V??????????????ꍇ?́u,?v?L???ŋ?邩?A?u-l?v????g?p???܂??B
?@?u-o?v?͒Z???I?v?V?????p?ł??i?A?ڑ?379???j?B?Z???I?v?V???????s?v?̏ꍇ?́u-o ""?v?̂悤?ɂ??܂??i??4?j?B
??4 ?u-o?v???g??Ȃ??ꍇ?A?ugetopt -l ?????I?v?V?????????? "" -- ?????v?̂悤?ɁA?Ō?i-l?Ȃǂ̃I?v?V?????w??̌?j?Ɂu""?v???w?肷??K?v??????B
?@?Ȃ??A?????I?v?V???????g???ہA?u?ȗ??\?L?v?ɑΉ????Ă??܂??B?Ⴆ?A?u--file?v?u--quiet?v?u--quote?v??3???ݒ肳??Ă???ꍇ?A?u--f?v?Łu--file?v?ƌ??Ȃ??A?u--qui?v?Łu--quiet?v?ƌ??Ȃ??܂??B
?R?}???h???s??
getopt -o abc -l aaa,bbb -- ??͂???????????
?i?Z???I?v?V?????u-a?v?u-b?v?u-c?v?A?????I?v?V?????u--aaa?v?u--bbb?v???g???ꍇ????͂???j
getopt -o "" -l aaa,bbb -- ??͂???????????
?i?Z???I?v?V?????Ȃ??A?????I?v?V?????u--aaa?v?u--bbb?v???g???ꍇ????͂???j
?????I?v?V?????Ńn?C?t????1?̏ꍇ?????e????
?@?????I?v?V?????́u--file?v?̂悤?Ƀn?C?t????2?g???܂??B??????getopt?R?}???h?ʼn?͂???ہA?u-file?v?̂悤?Ƀn?C?t????1?ł????Ă????e???????A?Ƃ????ꍇ?́u-a?v?I?v?V???????g?p???܂??B
?R?}???h???s??
getopt -a -o abc -l aaa,bbb -- ??͂???????????
?i?Z???I?v?V?????Ƃ??āu-a?v?u-b?v?u-c?v?A?????I?v?V?????u--aaa?v?u-aaa?v?u--bbb?v?u-bbb?v???g???ꍇ????͂???j
getopt -a -o "" -l aaa,bbb -- ??͂???????????
?i?Z???I?v?V?????Ȃ??A?????I?v?V?????u--aaa?v?u-aaa?v?u--bbb?v?u-bbb?v???g???ꍇ????͂???j
?@???2?ł́A?u-a?v???w?肵???ꍇ?Ǝw?肵?Ȃ??????ꍇ?̌??ʂ̈Ⴂ???r???Ă??܂??B
?????t???̒????I?v?V???????g?p????
?@?????I?v?V???????????t???ɂ??????ꍇ?A?I?v?V?????̌??Ɂu:?v??t???܂??B?Ⴆ?A?u-l aaa,bbb,ccc?v????͂???ہA?uaaa?v?Ɓuccc?v???????t???ɂ???̂ł???u-l aaa:,bbb,ccc:?v?̂悤?ɂ??܂??i???3?j?B
?@???????K?{?ł͂Ȃ??ꍇ?A?܂肠???Ă??Ȃ??Ă??悢?Ƃ????ꍇ?́u::?v?Ƃ??܂??B
?@?????I?v?V?????ɑ???????́A?u--file=?t?@?C?????v?̂悤?Ɂu=?v??t???Ďw?肵?܂????A?u=?v???ȗ????āu--file ?t?@?C?????v?̂悤?ɂ??邱?Ƃ?????܂??Bgetopt?R?}???h?ł͂ǂ???̎w????@?????p?ł??܂??i??5?j?B
??5 man getopt?ɂ͎??̂悤?ɋL?q????Ă???B?uIf the option has a required argument, it may be written directly after the long option name, separated by '=', or as the next argument (i.e. separated by whitespace on the command line).?v
?R?}???h???s??
getopt -o "" -l aaa:,bbb,ccc: -- ??͂???????????
?i?Z???I?v?V?????Ȃ??A???????K?{?̒????I?v?V?????u--aaa?v?A???????Ȃ??u--bbb?v?A???????K?{?́u-ccc?v???g???ꍇ????͂???j
getopt -o "" -l aaa::,bbb,ccc: -- ??͂???????????
?i?Z???I?v?V?????Ȃ??A???????????Ă??Ȃ??Ă??悢?????I?v?V?????u--aaa?v?A???????Ȃ??u--bbb?v?A???????K?{?́u-ccc?v???g???ꍇ????͂???j
?@???????K?{?ł͂Ȃ??ꍇ?A?I?v?V?????ɑ???????̎w????@?ɂ???ĉ?͌??ʂ??ς??܂??B
?@?u--file ?t?@?C?????v?̂悤?ɃI?v?V?????ƃX?y?[?X?ŋ?????ꍇ?̓I?v?V?????ւ̈????ł͂Ȃ??A?R?}???h???C???S?̂̈????Ƃ??ĉ??߂???܂??Bgetopt?ʼn?͂??????ʂ̏??Ԃ??ς?邱?Ƃɒ??ӂ??Ă????????i???4?j?B
?V?F???X?N???v?g?ʼn??p????i?Q?l?j
?@getopt?R?}???h?̏o?͂????H???邱?ƂŁA??蕪????₷???I?v?V??????????̉?͌??ʂ?\???ł??܂??B?????ł͒????I?v?V????????????????Љ?܂??B
?@?X?N???v?g1?iopt6.sh?j?ł́uflag_a?v?Ƃ????ϐ??ɂ??炩???߁ufalse?v?Ƃ????l???Z?b?g???Ă????A???s???Ɂu-a?v?u-aaa?v?u--aaa?v???w?肳??Ă????ꍇ?ɒl???utrue?v?ɕύX???Ă??܂??i??6?j?B?uflag_b?v?uflag_c?v?????l?ł??B
?@?u-n $(basename $0)?v?̕????ɂ??Ă??A?ڑ?379???́u?C???ł?opt4.sh?v???Q?Ƃ??Ă????????B
??6 true?Afalse?Ƃ??l?ł͂Ȃ??R?}???h?i/bin/true??/bin/false?A?A?ڑ?318???Q?Ɓj?B
?@?u--aaa?v?͈???????邩??????Ȃ??̂ŁA?u$2?v?Œl???Q?Ƃ??Ă??܂??B?擪???????u-?v?ł͂Ȃ??????ꍇ?͈????ƌ??Ȃ??A?ϐ?arg_a?Ɋi?[???āushift?v?R?}???h?Ŏ??ɐi?߂Ă??܂??i??7?j?Barg_c?ɂ??Ă????l?ȑ[?u?????Ă??܂??i???5?j?B
??7 ???̂悤?ɏ??????Ă??܂??ƁA?I?v?V?????̈????Ɂu-?v????n?܂镶??????w??ł??Ȃ??Ƃ??????ƂɂȂ??Ă??܂??B?X?N???v?g?̗p?r?ɂ???Ắu=?v???w?肵?Ă???ꍇ?́u-?v????n?܂???????t????悤?ɂ???K?v?????邾?낤?Bgetopt??ʂ??Ɓu=?v???g?p???????ǂ????????ʂł??Ȃ??Ȃ邽?߁Agetopt???g?킸?Ɉ?????????????K?v??????B
#! /bin/bash
# ?Z???I?v?V????-a,-b.-c?ƒ????I?v?V????--aaa,--bbb,-ccc???g?p
# -a??-aaa?A-b??-bbb?A-c??-ccc?͓????Ӗ??????A
# ?????I?v?V????--aaa??--ccc?͈????????i--ccc?͈??????K?{?j
# ?ȏオ???̃V?F???X?N???v?g?̏??????e?i?r?????Q?Ƃ̂??Ɓj
OPTIONS=`getopt -n $(basename $0) -a -o abc -l aaa::,bbb,ccc: -- "$@"`
eval set -- "$OPTIONS"
flag_a=false #?ϐ??uflag_a?v?ɃR?}???h???ufalse?v???Z?b?g
flag_b=false
flag_c=false
while [ $# -gt 0 ]
do
case $1 in
-a | -aaa | --aaa) flag_a=true;
if [ "${2::1}" != "-" ]; then
arg_a=$2; shift;
fi;;
-b | -bbb | --bbb) flag_b=true;;
-c | -ccc | --ccc) flag_c=true;
if [ "${2::1}" != "-" ]; then
arg_c=$2; shift;
fi;;
--) shift; break;;
esac
shift
done
if $flag_a; then
echo "-a ?w?肠??i????=$arg_a?j"
else
echo "-a ?w??Ȃ?"
fi
if $flag_b; then
echo "-b ?w?肠??"
else
echo "-b ?w??Ȃ?"
fi
if $flag_c; then
echo "-c ?w?肠??i????=$arg_c?j"
else
echo "-c ?w??Ȃ?"
fi
while [ $# -gt 0 ]
do
echo "????=$1"
shift
done
?@?V?F???X?N???v?g??getopts??getopt???g???ꍇ?́A???ꂼ??̉?͕??@?̓?????c?????A???ۂɗ??p????O?ɏ\???ȃe?X?g???s???悤?ɂ??܂??傤?B
?@?????????I?v?V???????g???????ꍇ?́Agetopt?ȂǂɔC?????炸?A?????ʼn?͂???????悢?ꍇ??????܂??B????̃X?N???v?g?̏ꍇ?A?????????I?v?V?????Ɏg???????܂??͕??????܂??Ă??邽?߁A?I?v?V???????ƂɕK?v?Ȕ?????s?????Ƃ??ł???ł??傤?B
?M?ҏЉ?
???? ?߂??݁i?ɂ??ނ? ?߂??݁j
???X??DOS???[?U?[?ŁuDOS??UNIX-like tools?v?????p?B?\?t?g?n?E?X?ɋΖ??????Y?Ǘ??̃p?b?P?[?W?\?t?g?E?F?A?̊J??????уT?|?[?g?Ɩ???S???A???̌ド?C?^?[?ɂȂ?B?????Ɂw?}???ł킩??Linux?x?w??Ԃ??Linux?V???[?Y?x?wAccess?ł͂??߂?f?[?^?x?[?X??????m????2?Łn?x?wmacOS?R?}???h????x?ȂǁB?n???????̂̍ݑ?A?Ǝx?????Ƃɂ?Microsoft Office?̋??ލ쐬?????e???[?j???O?w????S???B??ЂȂǂ?"PC?w???p?["??s???|?C???g???C?Ȃǂ??s???Ă???B
?֘A?L??
Copyright © ITmedia, Inc. All Rights Reserved.
?A?C?e?B???f?B?A????̂??m?点
??IT eBook
?ҏW??????̂??m?点
RSS?ɂ???
?A?C?e?B???f?B?AID?ɂ???
???[???}?K?W???o?^
??IT?̃??[???}?K?W???́A ???????A???ׂĖ????ł??B???Ѓ??[???}?K?W???????w?ǂ????????B
ITmedia?̓A?C?e?B???f?B?A??????Ђ̓o?^???W?ł??B
???f?B?A?ꗗ | ????SNS | ?L???ē? | ???₢???킹 | ?v???C?o?V?[?|???V?[ | RSS | ?^?c??? | ?̗p??? | ??????










