豚吐露@wiki
ShScript
最終更新:
ohden
-
view
~tips~
~memo~
- #!/bin/sh
-
- today=`\date "+%Y%m%d"`
- mkdir /home/pubuntu/backup/$today
- tar czvf /home/pubuntu/backup/repos$today.tar.gz /home/pubuntu/wk/repos/
- #!/bin/sh
-
- if [ "" != ${1} ]
- then
- today=`\date "+%Y%m%d"`
- else
- today=$1
- fi
chmod 770 $today chmod 660 $today/*
引数の数チェック
実行時引数が1つならhogehogeが実行される。1つ以外なら1を吐いて終了。
実行時引数が1つならhogehogeが実行される。1つ以外なら1を吐いて終了。
- if [ $# -ne 1 ]; then
- echo "Error: Please type argument."
- exit 1
- fi
-
- hogehoge
~φ(..*)メモメモ...~
コマンドの後ろに論理演算子付けてる書き方がどうなるか分からんくなるのでメモ。
短絡評価と呼ばれるもの。ShScriptに限った話ではない。言語仕様を確認すれば、他の言語でも利用することは可能みたい。
実行コマンド | 結果 | 備考 |
# [ ] && { echo hoge; } | testの結果が0以外(false)だと、中括弧内の処理は実施されない。 | |
# [ 1 ] && { echo hoge; } | hoge | testの結果が0(true)だと、中括弧内の処理は実施される。 |
# [ ] || { echo hoge; } | hoge | testの結果が0以外(false)だと、中括弧内の処理は実施される。 |
# [ 1 ] || { echo hoge; } | testの結果が0(true)だと、中括弧内の処理は実施されない。 |
要は、直前のコマンドの結果で中括弧内の処理を行うか行わんかという制御に使うみたい。
ワイルドカードでpath指定すると該当する一覧が取れる。
$ echo /???/
/bin/ /dev/ /etc/ /lib/ /mnt/ /opt/ /run/ /srv/ /sys/ /tmp/ /usr/ /var/
$ echo /*/
/bin/ /boot/ /dev/ /etc/ /home/ /lib/ /lib64/ /media/ /mnt/ /opt/ /proc/ /root/ /run/ /sbin/ /snap/ /srv/ /sys/ /tmp/ /usr/ /var/
$ echo /???/???/*32
/usr/bin/base32 /usr/bin/linux32
更新日: 2019年03月20日 (水) 18時54分48秒
- execの使い方: http://x68000.q-e-d.net/~68user/unix/pickup?exec -- (s1n) 2012-09-06 13:19:21
- 入出力のリダイレクト: http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231093/ -- (s1n) 2012-09-06 14:41:59
- ShScriptデバッグ①: bash -x hoge.sh って実行するか、1行目の #/bin/bash を #/bin/bash -x にする。 -- (s1n) 2012-09-10 19:06:29
- linuxで文字列操作する時は『sed』『awk』 -- (s1n) 2012-09-11 17:14:48
- 文字列中に『|』が入った変数をコマンドとして実行したい場合は『eval』を使う。でないとパイプが『'』で囲まれてしまって使い物にならない。 -- (s1n) 2012-09-11 20:28:04
- 『`~`』と『$(~)』は一緒みたい。 -- (s1n) 2013-07-31 20:56:35
- 『#!』から始まる行を『shebang(シェバン)』って言うらしい。 -- (s1n) 2019-03-05 08:59:20
- getopts でoption処理するの、コマンド忘れるからメモ。 -- (s1n) 2019-03-07 10:45:08
- fzf https://github.com/junegunn/fzf
出力を選択肢にして表示、選択した内容を返却してくれる。 -- (s1n) 2019-08-21 13:05:30 - 定間隔でコマンドを実行したい場合、watchが便利。
以下の例だと1秒起きにdateを実行してくれる。
watch -n 1 'date "+%F %T"'
ただし、watchは指定した処理が終わってから指定時間数え始めるので1周期は『指定時間+処理時間』になる。 -- (s1n) 2019-08-21 13:08:31