はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")
#!/bin/sh # # YYYY-MM-DD # STARTDATE=2014-02-20 ENDDATE=2014-03-02 CURRENTDATE=$STARTDATE while [ 1 ] ; do # 処理 echo $CURRENTDATE if [ $CURRENTDATE = $ENDDATE ] ; then break fi CURRENTDATE=`date -d "$CURRENTDATE 1day" "+%Y-%m-%d"` done
cron等でシェルを複数回実行した時、多重起動するとまずいので、それを回避するスクリプト。 業務上必要だったので作ってみた。 #!/bin/sh SCRIPT_PID="/home/takase/work/run_script.pid" if [ -f $SCRIPT_PID ]; then PID=`cat $SCRIPT_PID ` if (ps -e | awk '{print $1}' | grep $PID >/dev/null); then exit fi fi echo $$ > $SCRIPT_PID (この辺にバッチの処理) rm $SCRIPT_PIDpidでプロセスの有無を確認しているので起動中は2重に実行されないし、 何か理由があって落ちてた場合は再実行される。 後はcrontabにこのシェルを設定してやればOK
この記事は最終更新から1年以上経過しています。 気をつけてね。 入力時に1つ以上の半角スペースを入れるとBashヒストリに残らない。 下記のようなケースで役に立つ。 VMのひな形作成などでヒストリを残したくない ヒストリにあったshutdownコマンドを勢いで叩いてしまいたくない 追記:依存する設定 ちゃんと設定があるという突っ込みを頂いたので追記、環境変数HISTCONTROLに ignorespace または ignoreboth が設定されていたらこの記事の挙動になる。 という事がmanにちゃんと書いてあった。 HISTCONTROL A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignore
いつまで経っても終わらないから帰れない… 途中で終了してしまうと困るので、ログアウトしても終了しないように。 作業の流れ Ctrl+Zでコマンドの中断 bgでバックグラウンドに回す jobsでジョブの確認 disownでログアウトしても実行されるようにする 実際のコマンドだと
私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e
@hirose31 さんが「シェルスクリプトでハマった件→【募】ステキな回避方法」でお題を出されていて、それに回答してみました。 その内容はリンク先を見てもらうとして、回答の中で使ったbashのプロセス置換について書かれた記事をあまり見ないので、回答で使ったプロセス置換のことをエントリにしてみたいと思います。 最初に注意点ですが、プロセス置換の機能は、bashやzsh*1の機能でPOSIX互換の機能ではありません。そのため、使用時には、対応していないシェルでは使えませんし、bashで使う場合も /bin/sh ではなく /bin/bash を明示的に指定する必要があります。たとえば、プロセス置換を使ったスクリプト「script.sh」に対して"$ bash script.sh" というコマンドは成功しますが、"$ sh script.sh" というコマンドは失敗します。この辺りの違いは「/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く