da908dbf75337398338adbe1a1252c1b46f77d1e
Linux/ShellScript/ArgWithSpace.md
| ... | ... | @@ -0,0 +1,67 @@ |
| 1 | +[[_TOC_]] |
|
| 2 | + |
|
| 3 | +# 概要 |
|
| 4 | +- 空白を含む引き数をループ処理する場合、ダブルクォーテーションでくくる必要がある。 |
|
| 5 | + |
|
| 6 | +# ソース |
|
| 7 | +```bash |
|
| 8 | +#!/bin/bash |
|
| 9 | + |
|
| 10 | +echo "for arg in \$@:" |
|
| 11 | +for arg in $@ |
|
| 12 | +do |
|
| 13 | + echo "${arg}" |
|
| 14 | +done |
|
| 15 | + |
|
| 16 | +echo |
|
| 17 | + |
|
| 18 | +echo "for arg in \$*:" |
|
| 19 | +for arg in $* |
|
| 20 | +do |
|
| 21 | + echo "${arg}" |
|
| 22 | +done |
|
| 23 | + |
|
| 24 | +echo |
|
| 25 | + |
|
| 26 | +echo "for arg in \"\$@\":" |
|
| 27 | +for arg in "$@" |
|
| 28 | +do |
|
| 29 | + echo "${arg}" |
|
| 30 | +done |
|
| 31 | + |
|
| 32 | +echo |
|
| 33 | + |
|
| 34 | +echo "for arg in \"\$*\":" |
|
| 35 | +for arg in "$*" |
|
| 36 | +do |
|
| 37 | + echo "${arg}" |
|
| 38 | +done |
|
| 39 | +``` |
|
| 40 | + |
|
| 41 | +# 実行結果 |
|
| 42 | +``` |
|
| 43 | +$ ./testArg.sh "aaa bbb" 'ccc ddd' eee\ fff |
|
| 44 | +for arg in $@: |
|
| 45 | +aaa |
|
| 46 | +bbb |
|
| 47 | +ccc |
|
| 48 | +ddd |
|
| 49 | +eee |
|
| 50 | +fff |
|
| 51 | + |
|
| 52 | +for arg in $*: |
|
| 53 | +aaa |
|
| 54 | +bbb |
|
| 55 | +ccc |
|
| 56 | +ddd |
|
| 57 | +eee |
|
| 58 | +fff |
|
| 59 | + |
|
| 60 | +for arg in "$@": |
|
| 61 | +aaa bbb |
|
| 62 | +ccc ddd |
|
| 63 | +eee fff |
|
| 64 | + |
|
| 65 | +for arg in "$*": |
|
| 66 | +aaa bbb ccc ddd eee fff |
|
| 67 | +``` |
Linux/ShellScript/BackupWithReport.md
| ... | ... | @@ -0,0 +1,53 @@ |
| 1 | +[[_TOC_]] |
|
| 2 | + |
|
| 3 | +# 概要 |
|
| 4 | +- バックアップ終了時に、既定アカウントにレポートをメールする。 |
|
| 5 | +- nohup と組み合わせて使う想定。 |
|
| 6 | +``` |
|
| 7 | +# nohup ~/BackupWithReport.sh dest/ file1 file2 file3 & |
|
| 8 | +``` |
|
| 9 | + |
|
| 10 | +# ソース |
|
| 11 | +- [BackupWithReport.zip](BackupWithReport.zip) |
|
| 12 | +```bash |
|
| 13 | +#!/bin/bash |
|
| 14 | +# 目的ディレクトリに、指定されたファイル群をコピーする。 |
|
| 15 | +# 処理終了時に、開始時刻, 終了時刻, 処理ファイル名を既定のアドレスへメールする。 |
|
| 16 | + |
|
| 17 | +account=root |
|
| 18 | +scriptname="${0##*/}" |
|
| 19 | + |
|
| 20 | +if [ $# -lt 2 ]; then |
|
| 21 | + cat << EOL |
|
| 22 | +説明: 目的ディレクトリに、指定されたファイル群をコピーする。 |
|
| 23 | + 処理終了時にレポートを既定のアカウント(${account})へメールする。 |
|
| 24 | +使用法: ${scriptname} <dest> <file1> <file2> ... |
|
| 25 | +EOL |
|
| 26 | + exit 1 |
|
| 27 | +fi |
|
| 28 | + |
|
| 29 | +report=`mktemp` |
|
| 30 | +dest="$1" |
|
| 31 | +shift |
|
| 32 | + |
|
| 33 | +echo "Destination:" >> ${report} |
|
| 34 | +echo "${dest}" >> ${report} |
|
| 35 | +echo >> ${report} |
|
| 36 | +echo "Start:" >> ${report} |
|
| 37 | +date >> ${report} |
|
| 38 | +echo >> ${report} |
|
| 39 | +echo "Files:" >> ${report} |
|
| 40 | + |
|
| 41 | +for arg in "$@" |
|
| 42 | +do |
|
| 43 | + echo "${arg}" >> ${report} |
|
| 44 | + cp -ruv "${arg}" "${dest}" |
|
| 45 | +done |
|
| 46 | +echo >> ${report} |
|
| 47 | + |
|
| 48 | +echo "Finish:" >> ${report} |
|
| 49 | +date >> ${report} |
|
| 50 | + |
|
| 51 | +cat ${report} | mail -s "${scriptname} report" ${account} |
|
| 52 | +rm -f ${report} |
|
| 53 | +``` |
|
| ... | ... | \ No newline at end of file |
Linux/ShellScript/Home.md
| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | +[[_TOC_]]
|
|
| 2 | +- [[ArgWithSpace]]
|
|
| 3 | +- [[BackupWithReport]]
|
Linux/_Sidebar.md
| ... | ... | @@ -1,6 +1,7 @@ |
| 1 | 1 | # [[Linux|/Linux/Home]]
|
| 2 | 2 | - [[Apache|/Linux/Apache/Home]]
|
| 3 | 3 | - [[Install|/Linux/Install/Home]]
|
| 4 | +- [[ShellScript|/Linux/ShellScript/Home]]
|
|
| 4 | 5 | - [[Customize]]
|
| 5 | 6 | - [[Gollum]]
|
| 6 | 7 | - [[HardwareInfo]]
|