Next: Limitations of Usual Tools, Previous: Special Shell Variables, Up: Portable Shell [Contents][Index]
¤À¤á¤À¤èÁ´¤¯¡¤²æ¡¹¤ÏËܵ¤¤Ê¤Î¤Ë¡¥À©¸Â¤Î¤¢¤ë¥·¥§¥ë¤â¤¢¤ë¤ó¤Ç¤¹¡ª :)
Á´¤Æ¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤ä¥³¥Þ¥ó¥É¤Ï¡¤¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¡¤¤½¤Î¤¿¤á¡¤¥À¥Ã
¥·¥å¤Ç»Ï¤Þ¤ë°ú¿ô¤òÍѤ¤¤ë¤È¡¤Á´¤¯°Û¤Ê¤ëưºî¤ò¤¹¤ë¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¯¤Ù¤¤Ç¤¹¡¥
Î㤨¤Ðºá¤Î̵¤¤‘echo "$word"’¤Ç¤â¡¤word
¤¬¥À¥Ã¥·¥å¤Ç»Ï¤Þ¤ë¤È¤
¤Ïͽ´ü¤·¤Ê¤¤·ë²Ì¤È¤Ê¤ë¤Ï¤º¤Ç¤¹¡¥¤³¤ÎÌäÂê¤Ï¡¤¥Ñ¥¤¥×¤Ç¤Ï‘x’¤ò¸å¤Çɾ²Á
¤¹¤ë¤è¤¦¤Ë¡¤‘echo "x$word"’¤ò»ÈÍѤ¹¤ë¤³¤È¤ÇÈò¤±¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥
.
Ä̾ï¤Î¥Õ¥¡¥¤¥ë(‘test -f’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤)¤òÍѤ¤¤ë¤È¤¤À¤±
.
¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥Î㤨¤Ð¡¤Bash 2.03¤Ï¡¤
‘. /dev/null’¤Ç¸Ç¤Þ¤ê¤Þ¤¹¡¥¤Þ¤¿¡¤°ú¿ô¤Ë¥¹¥é¥Ã¥·¥å¤ò´Þ¤Þ¤Ê¤¤¾ì¹ç¤Ï
.
¤ÏPATH
¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¤¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Õ¥¡¥¤¥ë
foo¤Ç.
¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¡¤‘. ./foo’¤ò»ÈÍѤ¹¤ëɬÍפ¬
¤¢¤ë¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥
!
!
¤ò»ÈÍѤ¹¤ë¤³¤È¤ÏÉÔ²Äǽ¤Ç¤¹¡¥¥³¡¼¥É¤ò½ñ¤´¹¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
break
‘break 2’¤Î»ÈÍѤʤɤϰÂÁ´¤Ç¤¹¡¥
cd
POSIX 1003.1-2001¤Ç¤Ï¡¤cd
¤¬-L (“ÏÀÍýŪ”)
¤È-P (“ʪÍýŪ”)¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¡¤-L¤¬¥Ç¥Õ¥©¥ë
¥È¤Ç¤¢¤ë¤³¤È¤òÍ׵ᤷ¤Æ¤¤¤Þ¤¹¡¥¤·¤«¤·¡¤ÅÁÅýŪ¤Ê¥·¥§¥ë¤Ï¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó
¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤é¤º¡¤cd
¥³¥Þ¥ó¥É¤Ï-P¤Î¤è¤¦¤Ëưºî¤·¤Þ
¤¹¡¥
°Ü¿¢À¤Î¹â¤¤¥¹¥¯¥ê¥×¥È¤Ï¡¤¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤È²¾Äꤹ¤Ù
¤¤Ç¤Ï¤Ê¤¯¡¤¤É¤Á¤é¤Îưºî¤â¥Ç¥Õ¥©¥ë¥È¤È²¾Äꤹ¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤³¤ì¤Ï
¤Á¤ç¤Ã¤È¥È¥ê¥Ã¥¡¼¤Ç¡¤Î㤨¤Ð¡¤POSIX¤Î¥Ç¥Õ¥©¥ë¥È¤Îưºî¤Ç¤Ï¡¤¸½
ºß¤ÎÏÀÍýŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¾ì¹ç¡¤‘ls ..’¤È
‘cd ..’¤Ç¤Ï°Û¤Ê¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»²¾È¤·¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡¥
dir¤Ë..¤ÎÍ×ÁǤ¬Ìµ¤¤¾ì¹ç¡¤cd dir
¤ò»ÈÍѤ·¤Æ¤â
°ÂÁ´¤Ç¤¹¡¥¤Þ¤¿¡¤Autoconf¤¬À¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È¤Ï¡¤ac_top_srcdir
¤Î
¤è¤¦¤ÊÊÑ¿ô¤ò·×»»¤¹¤ë¤È¤¡¤¤³¤ÎÌäÂê¤òÄ´ºº¤¹¤ë¤Î¤Ç(see Configuration Actions)¡¤¤³¤ì¤é¤ÎÊÑ¿ô¤Çcd
¤·¤Æ¤â°ÂÁ´¤Ç¤¹¡¥
pwd
¥³¥Þ¥ó¥É¤ÎµÄÏÀ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
case
°ú¿ô¤ò°úÍÑÉä¤Ç°Ï¤àɬÍפϤ¢¤ê¤Þ¤»¤ó¡¥Ê¬Î¥¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡¥
ºÇ¸å¤Î‘;;’¤ÏÉÔÍפǤ¹¤¬¡¤»ÈÍѤ·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥
fnmatch
¤Î¥Ð¥°¤Î¤¿¤á¡¤bash
¤Ï¥Ð¥Ã¥¯¥¹¥¹¥é¥Ã¥·¥å¤òʸ»ú¥¯¥é
¥¹¤È¤·¤ÆÀµ¤·¤¯½èÍý¤¹¤ë¤³¤È¤Ë¼ºÇÔ¤·¤Þ¤¹¡¥
bash-2.02$ case /tmp in [/\\]*) echo OK;; esac bash-2.02$
¤³¤Î¥³¡¼¥É¤òUNIX¤äMS-DOS¤ÎÀäÂХѥ¹¤È¤·¤Æ»ÈÍѤ·¤¿¤¤¤È¤¡¤Èó¾ï¤Ë »Äǰ¤Ê¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤Î¥Ð¥°¤ò²óÈò¤¹¤ë¤¿¤á¤Ë¡¤¾ï¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òºÇ ½é¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡¥
bash-2.02$ case '\TMP' in [\\/]*) echo OK;; esac OK bash-2.02$ case /tmp in [\\/]*) echo OK;; esac OK
Ash 0.3.8¤Î¤è¤¦¤Ë¡¤¥·¥§¥ë¤Ë¤è¤Ã¤Æ¤Ï¶õ¤Îcase
/esac
¤Çº®Í𤹤ë
¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥
ash-0.3.8 $ case foo in esac; error→Syntax error: ";" unexpected (expecting ")")
¿¤¯¤Î¥·¥§¥ë¤Ç¤Ï¡¤¥«¥Ã¥³¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¥±¡¼¥¹Ê¸¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤é¤º¡¤¤½¤ì ¤Ï¡¤ÂФˤʤäƤ¤¤ë¥«¥Ã¥³¤Ë°Í¸¤·¤Æ¤¤¤ë¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë²æ¡¹¤Î¤è¤¦¤Ê¿Í ´Ö¤Ë¤È¤Ã¤Æ¤Ï»Äǰ¤Ê¤³¤È¤Ç¤¹¡¥Î㤨¤Ð¡¤Solaris 8¤ÎBourne¥·¥§¥ë¤¬¤½¤¦¤Ç¤¹¡¥
$ case foo in (foo) echo foo;; esac error→syntax error: `(' unexpected
echo
ñ½ã¤Êecho
¤Ç¤¹¤¬¡¤°Ü¿¢À¤ÎÌäÂê¤Îº¬¸»¤È¤·¤ÆºÇ¤â¶Ã¤¯¤Ù¤¤â¤Î¤«¤â¤·
¤ì¤Þ¤»¤ó¡¥°Ü¿¢À¤Î¹â¤¤‘echo’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¡¤¥ª¥×¥·¥ç¥ó¤È¥¨¥¹¥±¡¼
¥×¥·¡¼¥±¥ó¥¹¤òºï½ü¤·¤Ê¤¤¸Â¤êÉÔ²Äǽ¤Ç¤¹¡¥°Ü¿¢À¤òÌÜɸ¤È¤¹¤ë¿·¤·¤¤¥¢¥×¥ê¥±¡¼
¥·¥ç¥ó¤Ç¤Ï¡¤‘echo’¤ÎÂå¤ï¤ê¤Ë‘printf’¤ò»ÈÍѤ¹¤Ù¤¤Ç¤¹¡¥
¥ª¥×¥·¥ç¥ó¤ò´üÂÔ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥ECHO_N
¤Ê¤É¤Î¡¤-c¤ò¥·¥ß¥å
¥ì¡¼¥·¥ç¥ó¤¹¤ëÊýË¡¤Ï¡¤See Preset Output Variables.
°ú¿ô¤Ø¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ï¡¤½èÍý¤Ë¤Ä¤¤¤ÆÆ±°Õ¤¬¤È¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç»ÈÍѤ·¤Ê¤¤
¤Ç¤¯¤À¤µ¤¤¡¥‘echo '\n' | wc -l’¤òÍѤ¤¤ì¤Ð¡¤Digital Unix 4.0¤È
MIPS RISC/OS 4.52¤Îsh
¤Ç¤ÏÅú¤¨¤Ï2¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¤
Solaris¤Îsh
¡¤Bash¡¤¤½¤·¤ÆZsh(¤Îsh
¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¥â¡¼
¥É)¤Ç¤ÏÅú¤¨¤Ï1¤Ë¤Ê¤ê¤Þ¤¹¡¥ÌäÂ꤬ËÜÅö¤Ëecho
¤Ë¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ
¤¯¤À¤µ¤¤¡¥Á´¤Æ¤Î¥·¥§¥ë¤Ï¡¤‘'\n'’¤ò¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤È‘n’¤ÎÁȤß
¹ç¤ï¤»¤Ç¤¢¤ë¤È²ò¼á¤·¤Þ¤¹¡¥
¤³¤ì¤é¤ÎÌäÂê¤Î¤¿¤á¡¤ÉÔÄê¤Îʸ»ú¤ò´Þ¤àʸ»úÎó¤òecho
¤ËÅϤµ¤Ê¤¤¤Ç¤¯
¤À¤µ¤¤¡¥Î㤨¤Ð¡¤foo¤ÎÃͤ¬¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò´Þ¤ó¤Ç¤ª¤é¤º¡¤‘-’
¤Ç»Ï¤Þ¤é¤Ê¤¤¤³¤È¤òÃΤäƤ¤¤ë¾ì¹ç¡¤‘echo "$foo"’¤Ï°ÂÁ´¤Ç¤¹¤¬¡¤¤½¤ì°Ê
³°¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥Ò¥¢¥É¥¥å¥á¥ó¥È¤ò»ÈÍѤ¹¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
cat <<EOF $foo EOF
exit
exit
¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏ$?
¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡¥»Äǰ¤Ê¤¬¤éBash
2.04¤ò°Ü¿¢¤·¤¿DJGPP¤Î¤è¤¦¤Ë¡¤¥·¥§¥ë¤Ë¤è¤Ã¤Æ¤Ï‘exit 0’¤ò¼Â¹Ô¤·¤Þ¤¹¡¥
bash-2.04$ foo=`exit 1` || echo fail fail bash-2.04$ foo=`(exit 1)` || echo fail fail bash-2.04$ foo=`(exit 1); exit` || echo fail bash-2.04$
‘exit $?’¤ò»ÈÍѤ¹¤ë¤È´üÂÔ¤µ¤ì¤ëưºî¤ËÉüµ¢¤·¤Þ¤¹¡¥
autoconf
¤¬À¸À®¤¹¤ë¤è¤¦¤Ê¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ê¤É¤Ë¤Ï¡¤°ÊÁ°¤Î½ªÎ»¾õ
ÂÖ¤ò¥¯¥ê¡¼¥ó¥¢¥Ã¥×¤¹¤ë»Å³Ý¤±¤ò»ÈÍѤ·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥¥·¥§¥ë¤ÎºÇ¸å¤Î
¥³¥Þ¥ó¥É¤¬¥¼¥í¤Ç¤Ï¤Ê¤¤¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤·¤¿¾ì¹ç¤â¡¤¸Æ¤Ó½Ð¤·Â¦¤¬¥¨¥é¡¼¤Îȯ
À¸¤òÊó¹ð¤Ç¤¤ë¤è¤¦¤Ë¡¤¥¼¥í¤Ç¤Ê¤¤¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤¹¤ë»Å³Ý¤±¤¬¤¢¤ê¤Þ¤¹¡¥
»Äǰ¤Ê¤¬¤é¡¤Solaris 8 sh
¤Î¤è¤¦¤Ë¡¤¥·¥§¥ë¤Ë¤è¤Ã¤Æ¤Ïexit
¥³¥Þ¥ó¥É¤Î°ú¿ô¤ò̵»ë¤¹¤ë»Å³Ý¤±¤¬Â¸ºß¤¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤é¤Î¥·¥§¥ë¤Ç
¤Ï¡¤¤½¤Î»Å³Ý¤±¤Ç¸Æ¤Ó½Ð¤·¤¬¥×¥ì¡¼¥ó¤Îexit
¤Ë¤è¤ë¤â¤Î¤Ê¤Î¤«¡¤
exit 1
¤Ë¤è¤ë¤â¤Î¤Ê¤Î¤«·èÄê¤Ç¤¤Þ¤»¤ó¡¥exit
¤òľÀܸƤӽФ¹Âå
¤ï¤ê¤Ë¡¤¤³¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤¿¤á¤ËAC_MSG_ERROR
¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡¥
export
ÁȤ߹þ¤ß¤Îexport
¤Ï¡¤¥·¥§¥ëÊÑ¿ô¤ò´Ä¶ÊÑ¿ô(environment
variable)¤ËÊ£À½¤·¤Þ¤¹¡¥ÊÑ¿ô¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤Æ¹¹¿·¤µ¤ì¤ëÅ٤ˡ¤´Ä¶ÊÑ¿ô
¤â¹¹¿·¤µ¤ì¤Þ¤¹¡¥È¿ÂФˡ¤´Ä¶ÊÑ¿ô¤Ï¤¬¥·¥§¥ë¤«¤éÆÉ¤ß½Ð¤µ¤ì¤ëÅ٤ˡ¤³«»Ï»þ¤Ë
¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¤â¤Î¤È¤·¤Æ°õ¤Î¤Ä¤¤¤¿¥·¥§¥ëÊÑ¿ô¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤Ù¤¤Ç¤¹¡¥
¤¢¤¢¡¤Solaris 2.5¡¤IRIX 6.3¡¤IRIX 5.2¡¤AIX 4.1.5¡¤¤½
¤·¤ÆDigital UNIX 4.0¤Î¤è¤¦¤Ê¿¤¯¤Î¥·¥§¥ë¤Ï¡¤¼õ¤±¤È¤Ã¤¿´Ä¶ÊÑ¿ô¤ò
export
¤¹¤ë¤³¤È¤ò˺¤ì¤Æ¤¤¤Þ¤¹¡¥·ë²Ì¤È¤·¤Æ¡¤Æó¤Ä¤ÎÊÑ¿ô¤Ï¶¦Â¸¤·¤Æ
¤¤¤Þ¤¹¡¥´Ä¶ÊÑ¿ô¤È¥·¥§¥ëÊÑ¿ô¤ÎÆó¤Ä¤Ç¤¹¡¥°Ê²¼¤Î¥³¡¼¥É¤Ï¡¤¤³¤Î¼ºÇÔ¤òÀâÌÀ¤¹
¤ë¤â¤Î¤Ç¤¹¡¥
#! /bin/sh echo $FOO FOO=bar echo $FOO exec /bin/sh $0
´Ä¶ÊÑ¿ô¤Ç‘FOO=foo’¤È¤·¤Æ¼Â¹Ô¤·¤¿¾ì¹ç¡¤¤³¤ì¤é¤Î¥·¥§¥ë¤Ï¤½¤ì¤¾¤ì ‘foo’¤È‘bar’¤ò¸ò¸ß¤Ë½ÐÎϤ·¤Þ¤¹¤¬¡¤‘foo’¤ò½ÐÎϤ·¤¿¸å¤Ë¡¤Â³ ¤±¤Æ‘bar’¤ò½ÐÎϤ·¤Þ¤¹¡¥
¤³¤Î¤¿¤á¡¤¤½¤ì¤¾¤ì¹¹¿·¤·¤¿´Ä¶ÊÑ¿ô¤òºÆ¤Óexport
¤¹¤Ù¤¤Ç¤¹¡¥
false
false
¤¬¥¹¥Æ¡¼¥¿¥¹1¤Ç½ªÎ»¤¹¤ë¤³¤È¤ò´üÂÔ¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡¥
Solaris 8¤Î¥Í¥¤¥Æ¥£¥Ö¤ÊBourne¥·¥§¥ë¤Ï¡¤¥¹¥Æ¡¼¥¿¥¹255¤Ç½ªÎ»¤·¤Þ¤¹¡¥
for
°ÌÃ֤ΰú¿ô¤Þ¤Ç¥ë¡¼¥×¤¹¤ë¤¿¤á¡¤°Ê²¼¤Î¤è¤¦¤Ë»ÈÍѤ·¤¿¤È¤·¤Þ¤¹¡¥
for arg do echo "$arg" done
¥·¥§¥ë¤Ë¤è¤Ã¤Æ¤Ï¡¤´Ö°ã¤Ã¤Æ²ò¼á¤¹¤ë¤Î¤Ç¡¤for
¤ÈƱ¤¸¹Ô¤Ëdo
¤ò
½ñ¤¤¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡¥
for arg; do echo "$arg" done
ÌÀ¼¨Åª¤Ë°ÌÃ֤˰͸¤¹¤ë°ú¿ô¤ò»²¾È¤·¤¿¤¤¾ì¹ç¡¤‘$@’¤Î¥Ð¥°¤¬¤¢¤ë¤Î¤Ç¡¤ °Ê²¼¤Î¤è¤¦¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
for arg in ${1+"$@"}; do echo "$arg" done
¤·¤«¤·¡¤Zsh¤ÏBourne¥·¥§¥ë¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¥â¡¼¥É¤Ç¤â¡¤‘${1+"$@"}’ ¤Çñ¸ì¤ÎʬΥ¤ò»î¤ß¤ë¤Î¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥‘$@’¤Î¾ÜºÙ¤Ï¡¤ Shell Substitutions¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
if
‘!’¤Î»ÈÍѤϰܿ¢À¤¬¤¢¤ê¤Þ¤»¤ó¡¥°Ê²¼¤ÎÎã¤ò¹Í¤¨¤Þ¤¹¡¥
if ! cmp -s file file.new; then mv file.new file fi
¤½¤ÎÂå¤ï¤ê¤Ë°Ê²¼¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
if cmp -s file file.new; then :; else mv file.new file fi
if
¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤ò¥ê¥»¥Ã¥È¤·¤Ê¤¤¥·¥§¥ë¤â¤¢¤ê¤Þ¤¹¡¥
$ if (exit 42); then true; fi; echo $? 42
¤½¤³¤Ç¤Ï¡¤Å¬Àڤʥ·¥§¥ë¤Ê¤é‘0’¤ò½ÐÎϤ¹¤Ù¤¤Ç¤¹¡¥¤³¤ì¤Ï¡¤°Û¾ï½ªÎ»¤È¤Ê ¤ë¤Î¤Ç¡¤Makefile¤Ç¤ÏÆÃ¤ËÌäÂê¤Ç¤¹¡¥¤³¤ì¤¬¡¤Automake¤¬À¸À®¤¹¤ë¤è¤¦ ¤ÊŬÀڤ˽ñ¤«¤ì¤Æ¤¤¤ëMakefile¤¬¤´¤Á¤ã¤´¤Á¤ã¤·¤¿¹½À®¤Ë¤Ê¤Ã¤Æ¤¤¤ëÍý ͳ¤Ç¤¹¡¥
if test -f "$file"; then install "$file" "$dest" else : fi
printf
‘-’¤Ç»Ï¤Þ¤ë½ñ¼°²½Ê¸»úÎó¤ÏÌäÂê¤Ë¤Ê¤ê¤Þ¤¹¡¥bash
(Î㤨¤Ð
2.05b)¤Ç¤Ï¡¤¤½¤ì¤ò¥ª¥×¥·¥ç¥óʸ»ú¤È²ò¼á¤·¥¨¥é¡¼¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡¥¥ª¥×¥·¥ç¥ó
¤Î½ª¤ê¤Î°õ¤È¤Ê¤ë‘--’¤Ï¡¤½ñ¼°²½Ê¸»úÎó¤ò¤½¤Î¤Þ¤Þ¼õ¤±¤È¤ëNetBSD
Almquist shell (Î㤨¤Ð0.4.6)¤Ç¤Ï¤è¤¤¤È¤Ï¸À¤¨¤Þ¤»¤ó¡¥‘-’¤ò‘%c’
¤ä‘%s’¤Ë½ñ¤¯¤Î¤¬¡¤´Ö°ã¤¤¤òÈò¤±¤ëºÇ¤â´Êñ¤ÊÊýË¡¤Ç¤·¤ç¤¦¡¥
printf %s -foo
pwd
ºÇ¶á¤Î¥·¥§¥ë¤òÍѤ¤¤ë¤È¡¤pwd
¤Ï“ÏÀÍýŪ¤Ê”¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ÐÎÏ
¤·¡¤¤½¤Î¹½À®Í×ÁǤˤϥ·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¤¢¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤é¤Î¥Ç¥£
¥ì¥¯¥È¥ê̾¤Ï¡¤¹½À®Í×ÁǤϤ¹¤Ù¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤È¤Ê¤Ã¤Æ¤¤¤ë“ʪÍýŪ¤Ê” ¥Ç¥£
¥ì¥¯¥È¥ê̾¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡¥
POSIX 1003.1-2001¤Ç¤Ï¡¤pwd
¤Ï¡¤-L (“ÏÀÍýŪ”)
¤È-P (“ʪÍýŪ”)¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¡¤-L¤¬¥Ç¥Õ¥©¥ë
¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤·¤«¤·¡¤ÅÁÅýŪ¤Ê¥·¥§¥ë¤Ï¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó
¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤é¤º¡¤pwd
¥³¥Þ¥ó¥É¤Ï-P¤Î¤è¤¦¤Ëưºî¤·¤Þ
¤¹¡¥
°Ü¿¢À¤Î¹â¤¤¥¹¥¯¥ê¥×¥È¤Ç¤Ï¡¤¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤È²¾Äꤹ ¤Ù¤¤Ç¤Ï¤Ê¤¯¡¤¤É¤Á¤é¤Îưºî¤â¥Ç¥Õ¥©¥ë¥È¤È²¾Äꤹ¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤Þ¤¿¡¤ ¿¤¯¤Î¥Û¥¹¥È¤Ï‘/bin/pwd’¤¬‘pwd -P’¤ÈƱ¤¸¤Ç¤¹¤¬¡¤ POSIX ¤Ï¤³¤Îưºî¤òÍ׵ᤷ¤Æ¤ª¤é¤º¡¤°Ü¿¢À¤Î¹â¤¤¥·¥§¥ë¤Ç¤Ï¤½¤ì¤Ë °Í¸¤¹¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
Ä̾¤½¤Î¤Þ¤Þpwd
¤ò»ÈÍѤ¹¤ë¤Î¤¬ºÇÁ±¤Ç¤·¤ç¤¦¡¥ºÇ¶á¤Î¥Û¥¹¥È¤Ç¤Ï¡¤
¤³¤ì¤ÇÏÀÍýŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ÐÎϤ·¡¤°Ê²¼¤ÎÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡¥
pwd
¤ò¤½¤Î¤Þ¤Þ»È¤¦¤È¡¤¤³¤ÎÍýͳ¤Ç¼ºÇÔ¤¹¤ë¤Ï¤º¤Ï
¤¢¤ê¤Þ¤»¤ó¡¥
cd
¥³¥Þ¥ó¥É¤Ç¤ÎµÄÏÀ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
set
¤³¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Ï¡¤°ìÈÌŪ¤Ê¥À¥Ã¥·¥å¤Ç»Ï¤Þ¤ë°ú¿ô¤ÎÌäÂê¤ËľÌ̤·¤Þ¤¹¡¥
Bash¤äZsh¤Î¤è¤¦¤Ê¸½ºß¤Î¥·¥§¥ë¤Ç¤Ï¡¤¥ª¥×¥·¥ç¥ó¤Î½ª¤ê¤ò»ØÄꤹ¤ë
--(--°Ê¹ß¤ÎÁ´¤Æ¤Î°ú¿ô¤Ï¡¤Î㤨¤Ð‘-x’¤Ç¤¢¤Ã¤Æ¤â¥Ñ¥é
¥á¡¼¥¿¤Ç¤¹)¤òÍý²ò¤·¤Þ¤¹¤¬¡¤¤Û¤È¤ó¤É¤Î¥·¥§¥ë¤Ï¡¤¥ª¥×¥·¥ç¥ó¤Ç¤Ï¤Ê¤¤°ú¿ô¤¬
¸«¤Ä¤«¤ë¤È¤¹¤°¤Ë¥ª¥×¥·¥ç¥ó¤Î½èÍý¤òñ½ã¤ËÄä»ß¤·¤Þ¤¹¡¥¤³¤Î¤¿¤á¡¤¥ª¥×¥·¥ç¥ó
¤Î½èÍý¤ò½ªÎ»¤¹¤ë¤¿¤á¤Ë‘dummy’¤äñ½ã¤Ë‘x’¤ò»ÈÍѤ·¡¤¤½¤ì¤ò¼è¤ê½Ð
¤¹¤¿¤á¤Ëshift
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
set x $my_list; shift
¤¹¤Ù¤Æ¤Î¥ª¥×¥·¥ç¥ó¤òǧ¼±¤·¤Ê¤¤¤³¤È¤È¤Ï"È¿ÂÐ"¤ÎÌäÂê(Î㤨¤Ð¡¤‘set -e -x’¤Ç‘-x’¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë³ä¤êÅö¤Æ¤ë¤È¤¤¤Ã¤¿ÌäÂê)¤¬¤¢¤ë¥·¥§¥ë¤â¤¢ ¤ê¤Þ¤¹¡¥°Ê²¼¤Î¤è¤¦¤Ë¾Êά¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥
set -ex
shift
shift
¤¹¤ë¤â¤Î¤¬Ìµ¤¤¤È¤¡¤shift
¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï°¤¤¹Í
¤¨Êý¤Ç¤¢¤ë¤À¤±¤Ç¤Ê¤¯¡¤°Ü¿¢À¤¬Ìµ¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤³¤È¤âÄɲäµ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥
MIPS RISC/OS 4.52¤Î¥·¥§¥ë¤Ï¡¤¤½¤ì¤òÇÑ´þ¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥
source
POSIX¤¬Í׵ᤷ¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤¤³¤Î¥³¥Þ¥ó¥É¤Ï°Ü¿¢À¤¬¤¢¤ê¤Þ¤»¤ó¡¥
Âå¤ï¤ê¤Ë.
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
test
test
¥×¥í¥°¥é¥à¤Ï¡¤Â¿¤¯¤Î¥Õ¥¡¥¤¥ë¤Èʸ»úÎó¤Î¥Æ¥¹¥È¤ò¼Â¹Ô¤¹¤ëÊýË¡¤Ç
¤¹¡¥¤½¤ì¤ÏÊÌ̾¤Î‘[’¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤â¿¤¤¤Î¤Ç¤¹¤¬¡¤M4¤Î°úÍÑÉäʸ»ú
¤È¤¤¤¦ÌäÂ꤫¤é¡¤Autoconf¤Î¥³¡¼¥É¤Ç¤Ï¤½¤Î̾Á°¤ò»ÈÍѤ¹¤ë¤³¤È¤¬Í׵ᤵ¤ì¤Æ¤¤
¤Þ¤¹¡¥
test
¤ò»ÈÍѤ·¤ÆÊ£¿ô¤ÎÄ´ºº¤ò¹Ô¤¦É¬Íפ¬¤¢¤ë¾ì¹ç¡¤test
¤Î±é»»»Ò
¤Î‘-a’¤È‘-o’¤ÎÂå¤ï¤ê¤Ë¡¤¥·¥§¥ë±é»»»Ò¤Î‘&&’¤È‘||’ ¤Ç
ÁȤ߹ç¤ï¤»¤Æ¤¯¤À¤µ¤¤¡¥System V¤Ç¤Ï¡¤‘-a’¤È‘-o’¤ÎÍ¥Àè½ç°Ì¤Ï¡¤Ã±
¹à±é»»»Ò¤È¤Ï´Ö°ã¤Ã¤¿´Ø·¸¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥½¾¤Ã¤Æ¡¤POSIX¤Ï¤½¤ì¤é
¤ò»ØÄꤷ¤Ê¤¤¤Î¤Ç¡¤¤½¤ì¤ò»ÈÍѤ¹¤ë¤È°Ü¿¢À¤¬Ìµ¤¯¤Ê¤ê¤Þ¤¹¡¥Æ±¤¸Ê¸¤Ç
‘&&’¤È‘||’¤òÁȤ߹ç¤ï¤»¤ë¾ì¹ç¡¤Æ±¤¸Í¥Àè½ç°Ì¤¬¤¢¤ë¤³¤È¤ò³Ð¤¨¤Æ¤ª
¤¤¤Æ¤¯¤À¤µ¤¤¡¥
test
¤Ç‘!’¤ò»ÈÍѤ·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¤¬¡¤if
¤Ç¤Ï¤Ç¤
¤Þ¤»¤ó¡¥‘test ! -r foo || exit 1’¡¥
test
(files)configure
¥¹¥¯¥ê¥×¥È¤Ç¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤Î¥µ¥Ý¡¼¥È¤ò²Äǽ¤Ë¤¹¤ë¤¿
¤á¡¤¥Û¥¹¥È¥·¥¹¥Æ¥à¤ÎÂå¤ï¤ê¤Ë¡¤¥Ó¥ë¥É¥·¥¹¥Æ¥à¤ÎÆÃħ¤Î¥Æ¥¹¥È¤Ï¡¤²¿¤â¤¹¤Ù¤
¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤·¤«¤·¡¤Ç¤°Õ¤Î¥Õ¥¡¥¤¥ë¤Î¸ºß¤òÄ´ºº¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤¬È½
ÌÀ¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥¤½¤¦¤¹¤ë¤¿¤á¤Ë‘test -f’¤ä‘test -r’¤ò»ÈÍÑ
¤·¤Æ¤¯¤À¤µ¤¤¡¥4.3BSD¤Ë¤Ï‘test -x’¤¬Ìµ¤¤¤Î¤Ç»ÈÍѤ·¤Ê¤¤¤Ç¤¯
¤À¤µ¤¤¡¥¤Þ¤¿¡¤Solaris 2.5¤Ë¤Ï‘test -e’¤¬Ìµ¤¤¤Î¤Ç»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ
¤¤¡¥¥·¥¹¥Æ¥à¾å¤Ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¤¢¤ë¤³¤È¤ò¥Æ¥¹¥È¤¹¤ë¤¿¤á¤Ë¤Ï¡¤
‘test -L’¤Ç¤Ï¤Ê¤¯‘test -h’¤ò»ÈÍѤ·¤Æ²¼¤µ¤¤¡¥¤¤¤º¤ì¤â
POSIX 1003.1-2001¤Ë½àµò¤·¤¿Íͼ°¤Ç¤¹¤¬¡¤Solaris 8¤Î
/bin/sh
¤Î¤è¤¦¤Ê¸Å¤¤¥·¥§¥ë¤Ç¤Ï¡¤-h¤À¤±¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ
¤¹¡¥
test
(strings)test
¤Ï°ú¿ô¤ò¥ª¥×¥·¥ç¥ó¤È¤·¤Æ²ò¼á¤¹¤ë¤Î¤Ç(Î㤨¤Ð¡¤
‘string = "-n"’)¡¤ÆÃ¤Ëstring¤¬¥À¥Ã¥·¥å¤Ç»Ï¤Þ¤ë¾ì¹ç¡¤
‘test "string"’¤òÈò¤±¤Æ¤¯¤À¤µ¤¤¡¥
°ìÈ̤˿®¤¸¤é¤ì¤Æ¤¤¤ë¤³¤È¤È¤ÏÈ¿ÂФˡ¤‘test -n string’¤È ‘test -z string’¤Ï¡¤°Ü¿¢À¤¬¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤Ë¤â¤«¤«¤ï ¤é¤º¡¤(Solaris 2.5¡¤AIX 3.2¡¤UNICOS 10.0.0.6¡¤Digital UNIX 4Åù¤Î)¿¤¯¤Î¥·¥§¥ë¤Ë¤Ï¿®¤¸¤é¤ì¤Ê¤¤Í¥Àè½ç°Ì¤¬¤¢¤ê¡¤string ¤¬¥ª¥Ú¥ì¡¼¥¿¤Î¤è¤¦¤Ë¸«¤¨¤ë¾ì¹ç¤Ïº®Í𤹤뤫¤â¤·¤ì¤Þ¤»¤ó¡¥
$ test -n = test: argument expected
´í¸±¤Ï¤¢¤ê¤Þ¤¹¤¬¡¤Âå¤ï¤ê¤Ë‘test "xstring" = x’¤ä‘test "xstring" != x’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
°Ê²¼¤Î¤è¤¦¤Ê´·ÍѶç¤Ï¤Î¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤ÏÉáÄ̤˸«¤Ä¤«¤ê¤Þ¤¹¡¥
test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" && action
Í¿¤¨¤é¤ì¤Æ¤¤¤ë¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ¹¤ë¤È¤Æ°ºî¤·¤Þ¤¹¡¥¤½¤Î¤è¤¦¤Ê¹½Ê¸¤Ï¡¤¾ï¤Ë»È ÍѤòÈò¤±¤ë¤Ù¤¤Ç¤¹¡¥
echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1 && action
¥·¥§¥ë¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Ê¤Î¤Ç¤è¤ê®¤¯¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¤²Äǽ¤Ê¾ì½ê¤Ç¤Ï
case
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
case $ac_feature in *[!-a-zA-Z0-9_]*) action;; esac
¤¢¤¢¡¤POSIX¤Î¹½Ê¸‘[!…]’¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥·¥§¥ë¤Ï
ÃΤê¤Þ¤»¤ó¤¬¡¤Ê¸»ú¥¯¥é¥¹¤ÎÈÝÄê¤Ï°Ü¿¢À¤¬Ìµ¤¤¤«¤â¤·¤ì¤Þ¤»¤ó(ÂÐÏÃŪ¥â¡¼¥É
¤Ç¤Ï¡¤zsh
¤Ï‘[!…]’¤Î¹½Ê¸¤Çº®Í𤷡¤‘!’¤Î¤¿¤á¡¤¥Ò
¥¹¥È¥êÆâ¤Î¥¤¥Ù¥ó¥È¤òõ¤·¤Þ¤¹)¡¥Â¿¤¯¤Î¥·¥§¥ë¤Ï¡¤¹½Ê¸‘[^…]’ ¤Î
ÂåÂØÊª¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó(Solaris¡¤Digital UnixÅù)¡¥
°Ê²¼¤Ï²ò·èÊýË¡¤Î°ì¤Ä¤Ç¤¹¡¥
expr "$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null && action
°Ê²¼¤ÎÊý¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
expr "x$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null && action
‘foo’¤¬¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò´Þ¤ó¤Ç¤¤¤ë¤È¤ÌäÂê¤ò²óÈò¤¹¤ë¤Î¤Ç¡¤ ‘expr "Xfoo" : "Xbar"’¤Ï¡¤‘echo "Xfoo" | grep "^Xbar"’¤è¤ê·øÏ´¤Ç¤¹¡¥
trap
¾¯¤Ê¤¯¤È¤â¡¤¥·¥°¥Ê¥ë¤Î1¡¤2¡¤13¡¤¤½¤·¤Æ15¤ò¥È¥é¥Ã¥×¤¹¤ë¤³¤È¤Ï°ÂÁ´¤Ç¤¹¡¥¤Þ
¤¿¡¤0¤Î¥È¥é¥Ã¥×¤â²Äǽ¤Ç¡¤¤¹¤Ê¤ï¤Á¡¤¥¹¥¯¥ê¥×¥È¤¬½ª¤ë¤È¤(ÌÀ¼¨Åª¤Ê
exit
¤ä¥¹¥¯¥ê¥×¥È¤Î½ª¤ê)¤Ëtrap
¤ò¼Â¹Ô¤¹¤ë¤È¤¤¤¦¤³¤È¤Ç
¤¹¡¥
POSIX¤Ç¤Ï¡¤¤³¤ÎÅÀ¤ÏÀäÂÐŪ¤ËÌÀ³Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¤‘$?’¤ò¥È
¥é¥Ã¥×¤¹¤ë¤È¤¡¤¥È¥é¥Ã¥×¤ÎÁ°¤ÎºÇ¸å¤Ë¼Â¹Ô¤µ¤ì¤¿¥³¥Þ¥ó¥É¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬
ÀßÄꤵ¤ì¤ë¤Ù¤¤À¤È¤¤¤¦¤³¤È¤Ï¡¤¹¤¯Ç§¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡¥Û£Ëæ¤ÊÉôʬ¤Ï°Ê²¼¤Î¤è
¤¦¤ËÍ×Ìó²Äǽ¤Ç¤¹¡¥“¥È¥é¥Ã¥×¤¬exit
¤Ç³«»Ï¤µ¤ì¤ë¤È¤¡¤¼Â¹Ô¤µ¤ì¤¿
ºÇ¸å¤Î¥³¥Þ¥ó¥É¤Ï²¿¤Ç¤·¤ç¤¦¡©exit
¤ÎľÁ°¤Ç¤¹¤«¡©¤½¤ì¤È¤â
exit
¼«¿È¤Ç¤¹¤«¡©”
Bash¤Ïexit
¤òºÇ¸å¤Î¥³¥Þ¥ó¥É¤È¹Í¤¨¤Þ¤¹¤¬¡¤Zsh¤ÈSolaris 8
sh
¤Ï¡¤¥È¥é¥Ã¥×¤¬¼Â¹Ô¤µ¤ì¤¿¤È¤exit
¤Î½èÍýÃæ ¤Ê
¤Î¤Ç¡¤¥È¥é¥Ã¥×¤ò¼õ¿®¤¹¤ëÁ°¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤À¤È¹Í¤¨¤é¤ì¤Þ¤¹¡¥
$ cat trap.sh trap 'echo $?' 0 (exit 42); exit 0 $ zsh trap.sh 42 $ bash trap.sh 0
°Ü¿¢À¤Î²ò·èÊýË¡¤Ï´Êñ¤Ç¤¹¡¥‘exit 42’¤Ë¤·¤¿¤¤¤È¤¡¤‘(exit 42);
exit 42’¤ò¼Â¹Ô¤·¡¤ºÇ½é¤Îexit
¤ÏZsh¤ËÂФ¹¤ë42¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤ò
ÀßÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¡¤ÆóÈÖÌܤϡ¤¥È¥é¥Ã¥×¤òͶȯ¤·¡¤Bash¤ËÂФ·¤Æ½ªÎ»¥¹¥Æ¡¼
¥¿¥¹¤È¤·¤Æ¤Î42¤òÅϤ¹¤¿¤á¤Ç¤¹¡¥
FreeBSD 4.0¤Î¥·¥§¥ë¤Ë¤Ï¡¤°Ê²¼¤Î¥Ð¥°¤¬¤¢¤ê¤Þ¤¹¡¥¥³¡¼¥É¤¬ÆâÉô
trap
¤Î¾ì¹ç¡¤¶õ¹Ô¤Ç‘$?’¤¬0¤Ë¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡¥
$ trap 'false echo $?' 0 $ exit 0
¹¬±¿¤Ë¤â¤³¤Î¥Ð¥°¤Ïtrap
¤Î¤ß¤Ë±Æ¶Á¤·¤Þ¤¹¡¥
true
¿´ÇÛ¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥²æ¡¹¤¬ÃΤäƤ¤¤ë¸Â¤êtrue
¤Ë¤Ï°Ü¿¢À¤¬¤¢¤ê
¤Þ¤¹¡¥¤½¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¤¾ï¤ËÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¯(Î㤨¤Ð
Bash 1.x)¡¤°Ü¿¢À¤Î¹â¤¤¥·¥§¥ë¤Î¥³¥ß¥å¥Ë¥Æ¥£¤Ï¡¤:
¤Î»ÈÍѤò¹¥¤ß¤¬
¤Á¤Ç¤¹¡¥¤³¤ì¤Ë¤ÏÉûºîÍѤ¬¤¢¤ê¤Þ¤¹¡¥false
¤¬true
¤è¤ê°Ü
¿¢À¤¬¹â¤¤¤«¤É¤¦¤«¿Ò¤Í¤Æ¤ß¤¿¤È¤¤ÎAlexandre Oliva ¤Î²óÅú¤Ç¤¹¡¥
¤½¤ì¤é¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¤¥·¥§¥ë¤Ï¡¤
false
¤ËÂФ·¤Æ¤ÏÀµ¤·¤¯¡¤true
¤ËÂФ·¤Æ¤ÏÀµ¤·¤¯¤Ê¤¤¡¤°Û¾ï½ªÎ»¤Î¥¹¥Æ¡¼¥¿¥¹¤òÀ¸À®¤¹¤ë¤Î¤Ç¡¤ ¤¢¤ë°ÕÌ£¤Ç¤Ï¤½¤Î¤È¤ª¤ê¤Ç¤¹¡¥
unset
unset
¤Î¥µ¥Ý¡¼¥È¤ò²¾Äꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡¥¤½¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¤
PS1
¤Î¤è¤¦¤Ê¼ÙËâ¤ÊÊÑ¿ô¤òÍøÍÑÉÔ²Äǽ¤Ë¤¹¤ë¤³¤È¤ÏÈó¾ï¤ËÌòΩ¤Ä¤Î¤Ç¡¤Â¸
ºß¤ò¥Æ¥¹¥È¤·¡¤Ä󶡤µ¤ì¤Æ¤¤¤ì¤Ð¤½¤ì¤ò»ÈÍѤ·¡¤unset
¤¬¥µ¥Ý¡¼
¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤Ï¡¤Ìµ¸ú¤Ë¤¹¤ëÃͤòÍ¿¤¨¤Æ¤¯¤À¤µ¤¤¡¥
if (unset FOO) >/dev/null 2>&1; then unset=unset else unset=false fi $unset PS1 || PS1='$ '
̵¸ú¤Ë¤¹¤ëÃͤˤĤ¤¤Æ¤Ï¡¤See Special Shell Variables. ¤Þ¤¿¡¤´Ä¶ÊÑ¿ô¤Î
case¤Ë¤Ä¤¤¤Æ¤Ïexport
¤Î¥É¥¥å¥á¥ó¥ÈLimitations of Builtins¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
Next: Limitations of Usual Tools, Previous: Special Shell Variables, Up: Portable Shell [Contents][Index]