インストール済みのパッケージを rpm で再度インストールしようとした時、if 無しでもシェルを止めない方法

スポンサードリンク

Vagrant のプロビジョニング時、シェルファイルを幾つか組み合わせます。

シェルには set -eux を書いていますので、エラーが発生したタイミングで停止させております。

汎用性を高めるために、何度か同じパッケージを rpm でインストールするコマンドを書いています。

そうしますと、2 回目の rpm インストールでエラーと扱われてしまい、シェルが止まってしまいました。

この状況を打開すべく、検討し、結果が出ましたのでメモいたします。

ポイント

  • >/dev/null 2>&1 で無視しようとしたが、エラー扱いとなり、シェルは止まってしまった。
  • rpm インストール前後で、シェルのデバッグモードのオンオフを切り替えることで対処した。
  • 具体的には、コマンド前に set +e し、コマンド実行し、最後に set -e する。

“インストール済みのパッケージを rpm で再度インストールしようとした時、if 無しでもシェルを止めない方法”の続きを読む

【シェル芸人】10000 までの素数を出力するコマンド【Linux】

はじめに

面接官「ほう。得意な言語はPerlですか」 学生「はい!」 面接官「では、10000までの素数を出力してください」 学生「system “seq 2 10000 | factor | awk ‘NF == 2’ | cut -d: -f1″」 面接官「げぇっ シェル芸人」

まあ!素敵!

あら?Perl でと出題されていますのに、シェルで解答なさっていらっしゃるようですわね。それで、面接官が「げぇっ」となってしまいましたのね!面白いですわ♪

さて、今回はこのシェル部分に注目し、各コマンドについて調べることでシェルに対する理解を深める、勉強をしたいと存じます♪

10000 までの素数を出力するシェル

seq 2 10000 | factor | awk 'NF==2{print $2}'

最初に引用したツイートのシェル部分から最後の部分のみ変更しています。いろいろ調べていましたら、「cut」コマンドは「awk」コマンドを工夫することで省略できましたから。

さて、具体的に出力を確認しながら各コマンドを勉強してまいりましょう。その際、10000 までですと出力が多すぎますので、10 までの数で考えます。

“【シェル芸人】10000 までの素数を出力するコマンド【Linux】”の続きを読む


スポンサードリンク

シェル、sh ファイルの1行目のおまじないの名前ご存知?→シバン

シェルスクリプト1行目のおまじない、#! とは?

シバン (Unix)

シバンまたはシェバン (shebang) とはUNIXスクリプト#!から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。 hash-bangまたはsharp-bangとも言うが、後者を縮めたshebangという呼び方が一般的かつシンプルである。

引用元

実際には「#!」だけではなく、「#!/bin/bash」と書きます。他の書き方もあるようですが、わたくしはこれ以外使用したことはまだありません。

“シェル、sh ファイルの1行目のおまじないの名前ご存知?→シバン”の続きを読む