逆引きUNIXコマンド/文字列をコマンドとして実行する・evalコマンド
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
*文字列をコマンドとして実行する・evalコマンド [#s6e0830c]
evalコマンドを利用すると文字列をコマンドとして評価します。~
そもそもevalはあまり使うことはないと思いますが。
以下、evalが不要な例と必要な例を記述します。
#br
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
** コマンドだとevalを使用しなくても動作する [#p8c96b9f]
$ DATE_CMD="date"
$ $DATE_CMD
2011年 1月 31日 月曜日 10:10:10 JST
** 変数を変更しコマンドを実行するとエラーとなる [#z424327d]
以下の場合だとエラーとなってしまいます。
$ DATE_CMD="LANG=C date"
$ $DATE_CMD
bash: LANG=C: command not found
** evalにより意図した動作になる [#nb00b440]
このような場合、evalを利用すると意図した動作になります。
$ DATE_CMD="LANG=C date"
$ eval $DATE_CMD
Mon Jan 31 17:55:34 JST 2011
** 文字列評価後にコマンドとして実行する場合 [#ga05031e]
以下、evalを使用した場合と使用しない場合の違いを記述しま...
''注意点としては、evalは変数を評価後、引数の文字列をコマ...
***evalを使用したサンプルスクリプト [#u0ba032a]
#!/bin/bash
for i in 0 1 2
do
C=(C zh_CN.utf8 ja_JP.utf8)
eval echo "C array[$i] is \${C[$i]}"
LANG=${C[$i]} date
done
***evalを使用したサンプルスクリプトの結果 [#qae089e2]
C array[0] is C
Mon Jan 31 18:24:44 JST 2011
C array[1] is zh_CN.utf8
2011年 01月 31日 星期一 18:24:44 JST
C array[2] is ja_JP.utf8
2011年 1月 31日 月曜日 18:24:44 JST
eval echo "C array[$i] is \${C[$i]}" の変数が評価され、~
i=0の場合だと、eval echo "C array[0] is ${C[0]}"となり、e...
***evalを使用しないサンプルスクリプト [#k7bf18f3]
#!/bin/bash
for i in 0 1 2
do
C=(C zh_CN.utf8 ja_JP.utf8)
echo "C array[$i] is \${C[$i]}"
LANG=${C[$i]} date
done
***evalを使用しないサンプルスクリプトの結果 [#i2f5b314]
下記の結果の通り、${C[番号]}までは評価されますがevalを使...
C array[0] is ${C[0]}
Mon Jan 31 18:22:37 JST 2011
C array[1] is ${C[1]}
2011年 01月 31日 星期一 18:22:37 JST
C array[2] is ${C[2]}
2011年 1月 31日 月曜日 18:22:37 JST
#br
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
#br
終了行:
#navi(../)
*文字列をコマンドとして実行する・evalコマンド [#s6e0830c]
evalコマンドを利用すると文字列をコマンドとして評価します。~
そもそもevalはあまり使うことはないと思いますが。
以下、evalが不要な例と必要な例を記述します。
#br
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
** コマンドだとevalを使用しなくても動作する [#p8c96b9f]
$ DATE_CMD="date"
$ $DATE_CMD
2011年 1月 31日 月曜日 10:10:10 JST
** 変数を変更しコマンドを実行するとエラーとなる [#z424327d]
以下の場合だとエラーとなってしまいます。
$ DATE_CMD="LANG=C date"
$ $DATE_CMD
bash: LANG=C: command not found
** evalにより意図した動作になる [#nb00b440]
このような場合、evalを利用すると意図した動作になります。
$ DATE_CMD="LANG=C date"
$ eval $DATE_CMD
Mon Jan 31 17:55:34 JST 2011
** 文字列評価後にコマンドとして実行する場合 [#ga05031e]
以下、evalを使用した場合と使用しない場合の違いを記述しま...
''注意点としては、evalは変数を評価後、引数の文字列をコマ...
***evalを使用したサンプルスクリプト [#u0ba032a]
#!/bin/bash
for i in 0 1 2
do
C=(C zh_CN.utf8 ja_JP.utf8)
eval echo "C array[$i] is \${C[$i]}"
LANG=${C[$i]} date
done
***evalを使用したサンプルスクリプトの結果 [#qae089e2]
C array[0] is C
Mon Jan 31 18:24:44 JST 2011
C array[1] is zh_CN.utf8
2011年 01月 31日 星期一 18:24:44 JST
C array[2] is ja_JP.utf8
2011年 1月 31日 月曜日 18:24:44 JST
eval echo "C array[$i] is \${C[$i]}" の変数が評価され、~
i=0の場合だと、eval echo "C array[0] is ${C[0]}"となり、e...
***evalを使用しないサンプルスクリプト [#k7bf18f3]
#!/bin/bash
for i in 0 1 2
do
C=(C zh_CN.utf8 ja_JP.utf8)
echo "C array[$i] is \${C[$i]}"
LANG=${C[$i]} date
done
***evalを使用しないサンプルスクリプトの結果 [#i2f5b314]
下記の結果の通り、${C[番号]}までは評価されますがevalを使...
C array[0] is ${C[0]}
Mon Jan 31 18:22:37 JST 2011
C array[1] is ${C[1]}
2011年 01月 31日 星期一 18:22:37 JST
C array[2] is ${C[2]}
2011年 1月 31日 月曜日 18:22:37 JST
#br
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
#br
ページ名: