タグ

ShellScriptに関するkoyudoonのブックマーク (17)

  • ShellCheck – shell script analysis tool

    GPLv3: free as in freedom documented on the ShellCheck Wiki available on GitHub (as is this website) already packaged for your distro or package manager supported as an integrated linter in major editors available in CodeClimate, Codacy and CodeFactor to auto-check your GitHub repo written in Haskell, if you're into that sort of thing.

  • bash - What does it mean to have a $"dollarsign-prefixed string" in a script? - Unix & Linux Stack Exchange

    I just saw this in an init script: echo $"Stopping Apache" What is that dollar-sign for? My research so far: I found this in the bash manual: extquote If set, $'string' and $"string" quoting is performed within ${parameter} expansions enclosed in double quotes. This option is enabled by default. ...but I'm not finding any difference between strings with and without the $ prefix: $ echo "I am in $P

    bash - What does it mean to have a $"dollarsign-prefixed string" in a script? - Unix & Linux Stack Exchange
    koyudoon
    koyudoon 2015/02/25
    #bash や #zsh での、ドルマークを付した引用符。よく分からないまま使っていたけれどコレで疑問が氷解した。man bash とかで検索すると extquote オプションがヒットするけど説明不足なのよね (´・ω・`)
  • `set -e` しているときにコマンドの戻り値を得る - Qiita

    次の書き方だと ./xxx.sh が 0 以外のときにそこで終了してしまうので case の後が実行されることはありません。 set -e ./xxx.sh $1 case $? in 1) echo one ;; 2) echo two ;; *) echo unk ;; esac echo end

    `set -e` しているときにコマンドの戻り値を得る - Qiita
    koyudoon
    koyudoon 2015/02/22
    set -e
  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
    koyudoon
    koyudoon 2015/02/22
    set -e
  • "set -e"に関するメモ - Shohei Yoshida's Diary

    シェルスクリプトで #!/bin/sh set -e とすると、コマンド実行時に戻り値が 0以外になれば即座に終了 するという便利な機能があります。しかし diffコマンドのように 戻り値 0は差分なし、1は差分あり、それ以外はエラーみたいな 感じで戻り値を利用されると、diffの部分で処理が終了してしまう という問題があります。 #!/bin/sh set -e diff test/old.txt test/new.txt > test.patch echo "finish" のような場合, diff自体は成功しますが、それ以降が実行されず "finish"と表示されないということが起きます。 解決方法 コマンドを ifや whileの条件として書くことで、この問題を回避できます。 #!/bin/sh set -e if diff test/old.txt test/new.txt >

    "set -e"に関するメモ - Shohei Yoshida's Diary
    koyudoon
    koyudoon 2015/02/22
    set -e
  • シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法

    シェルスクリプトで set -e (errexit) しておくと、スクリプト中に実行したコマンドの終了ステータスが「非0」だった場合、つまりコマンドが失敗したときにそこでスクリプトを中断してくれるようになります。(終了ステータスとは「Exit code」「Return status」などと呼ばれるものです。) 都度エラー判定を書かなくてもよくなるので便利なオプションですが、個別にエラーハンドリングをしたくなった時にも意図せずスクリプトが中断されてしまい困ったことになります。 例えば、以下の例は false コマンドの実行で失敗扱いとなり、そこでスクリプトが中断されるため「finish」が出力されることはありません。 set -e # false コマンドは必ず終了ステータスに 1 (失敗) を返すコマンド # エラーが起きたとみなされスクリプトは中断される false # このコマンドは実

    シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法
    koyudoon
    koyudoon 2015/02/22
    set -e
  • Shell Style Guide

    Revision 1.25 Paul Armstrong Too many more to mention Bash is the only shell scripting language permitted for executables. Executables must start with #!/bin/bash and a minimum number of flags. Use set to set shell options so that calling your script as bash <script_name> does not break its functionality. Restricting all executable shell scripts to bash gives us a consistent shell language that'

  • カレントディレクトリがGitリポジトリ下か否か判定する - すぎゃーんメモ

    カレントディレクトリがGitリポジトリ管理下か否か、ってどうやって判定するのが良いのだろう 2012-03-23 12:52:55 via Twitter for Mac @sugyan 僕はこうしています。ご参考までに。 URL 2012-03-23 13:01:51 via web to @sugyan @Cside_ ありがとうございます、やっぱりそんな感じですかねー! 2012-03-23 14:06:12 via Twitter for Mac to @Cside_ @sugyan もしzshでならこんな感じでできます. URL 2012-03-23 14:16:21 via YoruFukurou to @sugyan @yaotti ありがとうございます、vcs_infoは便利ですよねー。シェルスクリプト内で判定つかいたいなーと思ったのですが、vcs_infoの中ではgit

    koyudoon
    koyudoon 2014/12/01
    ShellScript で git 操作をするときは rev-parse が便利。というか必須。
  • bash の関数で {} 以外を使った書き方とリダイレクトについて試してみる - Qiita

    help function では {} の書式しか書いてないけど man bash では以下のように書かれていて複合コマンドやリダイレクションが使えるとのこと。 [ function ] name () compound-command [redirection] 複合コマンドとは for ~ done や while ~ done、()、[[]] などなど。 for & while セミコロンや改行が使えるのは普通のコマンドと同じ。対話モードで改行を使ってみるとどこで関数が終わるのかわかりやすい。 $ func () for i in "$@"; do echo $i; done $ func "1 a" "2 b" "3 c" 1 a 2 b 3 c $ func () # 改行して書いても OK > while [ "$1" ] > do > echo $1 > shift > do

    bash の関数で {} 以外を使った書き方とリダイレクトについて試してみる - Qiita
    koyudoon
    koyudoon 2014/11/24
    () や {} について
  • Make のポータビリティについて考える

    Makefile 中では、 $(MAKE) や $(AWK) など、変数で記述することがよく行われる。

    koyudoon
    koyudoon 2014/11/03
    可搬性の話から、Makefile の特殊変数 SHELL について。
  • USP友の会:シェルスクリプトでの標準入力の読み方

    友の会のページにあまりにもシェルスクリプトの情報が少ないので反省している会長です。 先日、あるサイトで、「シェルスクリプトで標準入力を読むためにはreadコマンドを使う」ということを書いてあったのですが、ちょっと補足が必要だと思いました。 確かに、下のようにreadを使うと、標準入力を読むことができます。 ueda@uedaubuntu:~$ cat hoge.sh #!/bin/bash while read i ; do #数字を読み込んで1足して出力する。 echo $((i+1)) done 実行するとこうなりますね。 ueda@uedaubuntu:~$ seq 1 10 | ./hoge.sh 2 3 4 5 6 7 8 9 10 11 /dev/stdinを使おう でも、この方法は一番最後に、どうしようもないときにとるべき手段です。同じ機能を持つシェルスクリプトは、以下のよう

    koyudoon
    koyudoon 2014/04/09
    ShellScriptで標準入力を加工する際の下準備
  • シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋

    シェルスクリプトで標準入力を加工する際に若干ハマリかけたので、今回はそのお話をしたいと思います。 みなさんのシェルスクリプトライフの一助になれば幸いです。 標準入力を加工するシェル関数、例えば、 入力を文とするメールを送るシェル関数 ログを入力として受け取り、集計や解析をするシェル関数 を書く場合、みなさんどういう風に書いているでしょうか。 私は今までこんな風に書いていました… send_mail() { from='sender@example.org' to='receiver@example.org' { echo "From: ${from}" echo "To: ${to}" echo "Subject: test" echo cat - } | qmail-inject -A -f${from} } make_mail_body | send_mail これの何が問題かという

    シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋
    koyudoon
    koyudoon 2014/04/09
    ShellScriptで標準入力を加工する際の下準備
  • どさにっき - しつこく 503

    2007年7月12日(木) ■ しつこく 503 _ mod_cern_meta は任意のヘッダを追加するという意味では mod_headers と似た動作をするモジュールなんだけど、試してみたら mod_headers と違ってステータスコードの変更も可能だった。こんな感じ。 Alias /hoge/ /somewhere/503.html/ <Directory /somewhere> AcceptPathInfo on MetaFiles on </Directory> さらに /somewhere/.web/503.html.meta というファイルを作成し、 Status: 503 service unavailable と書いておく。すると、/hoge/ 以下へのアクセスが /somewhere/503.html にエイリアスされ、mod_cern_meta により .web/

    koyudoon
    koyudoon 2014/04/09
    ShellScriptで標準入力を加工する際の下準備
  • シェルスクリプトでパイプを判断する - Qiita

    Unix の基的考え方のひとつに「フィルタとして振る舞う」というものがあります。標準入力から入力をして何らかの処理を行い、標準出力に出力を行うように設計されているコマンドを フィルタ と呼びます。フィルタ・コマンドそれ自身は単純な機能しか持っていませんが、これを | (バーティカルバー)で結びつけることでフィルタを部品のように扱い、大きな機能をもったコマンドとして機能させることが出来ます。 (例)

    シェルスクリプトでパイプを判断する - Qiita
    koyudoon
    koyudoon 2014/04/08
    ShellScriptで標準入力を加工する際の下準備。これ読んどけばおk
  • 「スマートな紳士のためのシェルスクリプト」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    スマートな紳士のためのシェルスクリプト(8): シェルスクリプト最大の罠、while問題 シェルスクリプトプログラミングに取り組むときに最もはまりやすい問題、それが「while問題」だ。今回はその原因を掘り下げてみよう。(編集部)(2012/9/14) スマートな紳士のためのシェルスクリプト(7): 「アット・ア・グランス性」確保のための8つの原則 シェルスクリプトで読みやすく、後から変更しやすいプログラミングを行うには、手続き型のプログラミング言語とは違ったポイントを押さえなくてはならない。筆者はそのコツを「アット・ア・グランス性」と表現している。(編集部)(2012/8/17) スマートな紳士のためのシェルスクリプト(6): あなたの知らない>|と<>の使い方 >や>>、>&といったひんぱんに使われるリダイレクトに対し、ほとんど使われることのないリダイレクトが>|と<>だ。実際には興味

  • 2万5000台超のLinux/*BSDサーバがマルウェア感染 - 1日3500万通のスパム送信

    ESETは3月18日(米国時間)、「Over 500,000 PCs attacked every day after 25,000 UNIX servers hijacked by Operation Windigo」において「Operation Windigo」によって25,000台を超えるLinux/*BSDサーバが乗っ取られており、結果として1日あたり3500万通のスパムメール送信に使われていると伝えた。詳細な報告書にはLinux FoundationやcPanelもこの攻撃を受けたという説明がある。ただちに管理下にあるサーバをチェックするとともに、クラッキングを受けた形跡がある場合にはシステムの再インストールとSSHパスワードの変更、秘密鍵の削除と変更などが推奨されている。 乗っ取られたWebサーバはほかのマルウェアの感染に使われたり好ましくないサイトへのリダイレクトといった行為

  • コマンドラインプログラムにおける引数、オプションなどの標準仕様 | プログラマーズ雑記帳

    コマンドラインプログラムの引数、オプションといったインターフェースには ちゃんと仕様、ガイドラインといったものが存在しています。 Unix(Linux) では慣習としてなんとなく合うものなのですが、 WindowsJava のプログラムなどでは、インターフェースがめちゃくちゃなプログラムも結構あります。 今回はコマンドラインプログラムの標準的なインターフェースの仕様、動作を紹介します。 プログラムを作る際の参考にしてもらえればと思います。 標準インターフェースはよくあるケースを考慮されて作られているものです。 自分の作っているプログラムは標準的なケースと違うといったことがあるかもしれません。 しかし、 標準のスタイルは合わせること自体に意味があります。 作成する場合にはなるべく標準インターフェースにあわせて作るべきだと思います。 Windows or Unix スタイル コマンドライ

  • 1