逆引きシェルスクリプト/シェルスクリプトのデバッグ方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* シェルスクリプトのデバッグ方法 [#f5679487]
#contents
シェルスクリプトの動作状況を確認したい場合がありますよね。~
例えば意図した動作にならない場合にデバッグをしたい時など...
本資料はbashを利用した場合のデバッグ方法(シェルの動作確認...
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連資料 [#t0a581d3]
-[[シェルスクリプトのデバッグ・実行する行と変数展開した行...
* 動作説明用シェルスクリプトの説明 [#o9e3ad02]
#ref(debug.sh)
#!/bin/bash
if [ $1 == "sakura" ]; then
echo "hello sakura"
else
echo "hello!"
fi
foo=`ls /etc/init.d/`
bar=`LANG=C date`
上記スクリプトは引数としてsakuraを与えると hello sakura ...
また、foo, bar変数に実行したコマンド結果を格納しています。
ただし、引数が無い場合($1に何も設定されていない)は、''una...
&color(red){注意};~
文字列比較に==を利用しています。~
bashの場合は問題なく動作しますが、zshなどの場合はエラーと...
==ではなく=を1つにしてください。
** 実行結果(debug.sh) [#wad15dbe]
上記シェルスクリプトに実行権限を付与し引数なしの場合と引...
$ chmod +x debug.sh
$ ./debug.sh
./debug.sh: line 3: [: ==: unary operator expected
hello!
$ ./debug.sh sakura
hello sakura
$1に何も存在しないので、if [ == "sakura" ]; then となりun...
* -xオプションによりシェルスクリプトの動作状況がわかる [#...
bash -x シェルスクリプト名
上記の方法でシェルスクリプトの動作確認をすることができま...
以下、引数なしの場合と引数sakuraの場合の動作結果を記しま...
** 引数なし [#g35287a8]
bash -x debug.shで動作させた結果は以下の通りです。~
先頭に+がついています。~
if文の左辺に値が無いのがわかります。~
また、foo, bar変数にコマンドが返却した文字列が格納されて...
$ bash -x debug.sh
+ '[' == sakura ']'
debug.sh: line 3: [: ==: unary operator expected
+ echo 'hello!'
hello!
++ ls /etc/init.d/
+ foo='NetworkManager
acpid
anacron
atd
auditd
<省略>
xfs
xinetd
ypbind
yum-updatesd'
++ LANG=C
++ date
+ bar='Mon Nov 21 14:13:06 JST 2011'
** 引数あり(sakura) [#a62553cf]
bash -x debug.sh sakuraで動作させた結果は以下の通りです。~
if文の左辺に$1が設定されているのがわかります。~
foo, bar変数にコマンドが返却した文字列が格納されているの...
$ bash -x debug.sh sakura
+ '[' sakura == sakura ']'
+ echo 'hello sakura'
hello sakura
++ ls /etc/init.d/
+ foo='NetworkManager
acpid
anacron
atd
auditd
<省略>
xfs
xinetd
ypbind
yum-updatesd'
++ LANG=C
++ date
+ bar='Mon Nov 21 14:16:09 JST 2011'
シェルスクリプトのデバッグは-xオプションを利用することに...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
終了行:
#navi(../)
* シェルスクリプトのデバッグ方法 [#f5679487]
#contents
シェルスクリプトの動作状況を確認したい場合がありますよね。~
例えば意図した動作にならない場合にデバッグをしたい時など...
本資料はbashを利用した場合のデバッグ方法(シェルの動作確認...
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連資料 [#t0a581d3]
-[[シェルスクリプトのデバッグ・実行する行と変数展開した行...
* 動作説明用シェルスクリプトの説明 [#o9e3ad02]
#ref(debug.sh)
#!/bin/bash
if [ $1 == "sakura" ]; then
echo "hello sakura"
else
echo "hello!"
fi
foo=`ls /etc/init.d/`
bar=`LANG=C date`
上記スクリプトは引数としてsakuraを与えると hello sakura ...
また、foo, bar変数に実行したコマンド結果を格納しています。
ただし、引数が無い場合($1に何も設定されていない)は、''una...
&color(red){注意};~
文字列比較に==を利用しています。~
bashの場合は問題なく動作しますが、zshなどの場合はエラーと...
==ではなく=を1つにしてください。
** 実行結果(debug.sh) [#wad15dbe]
上記シェルスクリプトに実行権限を付与し引数なしの場合と引...
$ chmod +x debug.sh
$ ./debug.sh
./debug.sh: line 3: [: ==: unary operator expected
hello!
$ ./debug.sh sakura
hello sakura
$1に何も存在しないので、if [ == "sakura" ]; then となりun...
* -xオプションによりシェルスクリプトの動作状況がわかる [#...
bash -x シェルスクリプト名
上記の方法でシェルスクリプトの動作確認をすることができま...
以下、引数なしの場合と引数sakuraの場合の動作結果を記しま...
** 引数なし [#g35287a8]
bash -x debug.shで動作させた結果は以下の通りです。~
先頭に+がついています。~
if文の左辺に値が無いのがわかります。~
また、foo, bar変数にコマンドが返却した文字列が格納されて...
$ bash -x debug.sh
+ '[' == sakura ']'
debug.sh: line 3: [: ==: unary operator expected
+ echo 'hello!'
hello!
++ ls /etc/init.d/
+ foo='NetworkManager
acpid
anacron
atd
auditd
<省略>
xfs
xinetd
ypbind
yum-updatesd'
++ LANG=C
++ date
+ bar='Mon Nov 21 14:13:06 JST 2011'
** 引数あり(sakura) [#a62553cf]
bash -x debug.sh sakuraで動作させた結果は以下の通りです。~
if文の左辺に$1が設定されているのがわかります。~
foo, bar変数にコマンドが返却した文字列が格納されているの...
$ bash -x debug.sh sakura
+ '[' sakura == sakura ']'
+ echo 'hello sakura'
hello sakura
++ ls /etc/init.d/
+ foo='NetworkManager
acpid
anacron
atd
auditd
<省略>
xfs
xinetd
ypbind
yum-updatesd'
++ LANG=C
++ date
+ bar='Mon Nov 21 14:16:09 JST 2011'
シェルスクリプトのデバッグは-xオプションを利用することに...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
ページ名: