Next: , Previous: Special Shell Variables, Up: Portable Shell   [Contents][Index]


10.9 ¥·¥§¥ëÁȤ߹þ¤ß¤ÎÀ©¸Â

¤À¤á¤À¤èÁ´¤¯¡¤²æ¡¹¤ÏËܵ¤¤Ê¤Î¤Ë¡¥À©¸Â¤Î¤¢¤ë¥·¥§¥ë¤â¤¢¤ë¤ó¤Ç¤¹¡ª :)

Á´¤Æ¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤ä¥³¥Þ¥ó¥É¤Ï¡¤¥ª¥×¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¡¤¤½¤Î¤¿¤á¡¤¥À¥Ã ¥·¥å¤Ç»Ï¤Þ¤ë°ú¿ô¤òÍѤ¤¤ë¤È¡¤Á´¤¯°Û¤Ê¤ëưºî¤ò¤¹¤ë¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¯¤Ù¤­¤Ç¤¹¡¥ Î㤨¤Ðºá¤Î̵¤¤‘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¤ò»ÈÍѤ¹¤ë¤Î¤¬ºÇÁ±¤Ç¤·¤ç¤¦¡¥ºÇ¶á¤Î¥Û¥¹¥È¤Ç¤Ï¡¤ ¤³¤ì¤ÇÏÀÍýŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ÐÎϤ·¡¤°Ê²¼¤ÎÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡¥

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: , Previous: Special Shell Variables, Up: Portable Shell   [Contents][Index]