モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

シェルスクリプト

シェルスクリプト

  • シェルスクリプトにおける数値計算
    シェル変数はすべて文字列扱いであるため、数値計算のためには専用のコマンドを用いる必要があります。 整数同士の計算 整数同士の四則演算にはexprコマンドを使用します。 sample.sh #!/bin/sh expr 1 + 1 expr 1 - 1 expr 1 '*' 1 # ワイルドカードと区別するために、クォーテーションで囲う必要があります expr 1 / 1 expr 1 % 1 実行...
  • シェルスクリプトの変数について
    値のセット/リセット VAR=128 # セット VAR= # リセット # unset VAR # リセットの別の方法 (変数の消去。unsetは関数の消去もできます) = の左右に空白が入るとエラーになります。 sample.sh #!/bin/sh TODAY=`date` # TODAY = `date` # エラー echo "Date: `date`, $TODAY" 実行例 $...
  • シェルスクリプト:パスワード等の入力時にエコーバックをOFFにする
    sttyコマンドを用いることで、ユーザー入力のエコーバックのON/OFFを切り替えることができます。 sample.sh #!/bin/sh stty -echo echo 'Type something: \c' read STR stty echo echo '\nYou typed:' $STR 実行例 $ sh sample.sh Type something: <= 例えば...
  • シェルスクリプトにおける条件分岐
    if-elif-else C言語など、一般の言語と同様にif文による条件分岐が記述できます。elif ('else if'でも'elsif'でもない) であったり、then, fiと記述されるあたりなどが、Rubyとよく似ています。以下のサンプルでは、testというファイルのステータスを確認するコマンドを用いています。 sample.sh #!/bin/sh if test -r sample.s...
  • base64について (UNIXコマンドやRubyライブラリの簡単な使用例)
    base64エンコーディングまたはデコーディングとは、任意のデータを64種類の文字 0-9,a-z,A-Z,'+','/' (10+26x2+2=64) で表現し直すことまたは表現されたものをもとのデータに戻すことです。上記64種類の文字は7bitで表現可能なASCII文字の範囲内にあるため、電子メールでの通信など、マルチバイト文字やバイナリデータを扱えない環境で使用されることがあります。なお、'...
  • シェルスクリプトにおける関数定義
    シェル関数は複数のコマンドをひとまとめにしたものです。引数の取得では、シェルスクリプトの引数と同じ名称の特殊変数を使用します。また、独自のローカル変数を用意することができないため、関数外で使用されている変数の内容を書き換えてしまう危険性があります。 シェル関数は複数のコマンドをまとめたもの sample.sh #!/bin/sh echo1(){ echo 1 } echo1 実行例 $ ...
  • シェルスクリプトにおける反復処理
    for sample.sh #!/bin/sh for i in a b c; do echo $i done ARR=( "abc" "xyz" ) for e in "${ARR[@]}"; do echo $e done 実行例 $ ./sample.sh a b c abc xyz while sample.sh #!/bin/sh cnt=1 while ...
  • シェルスクリプトでシグナルをキャッチする
    無限ループに陥ってしまったプロセスを強制終了させるためにはCtrl-Cやkillコマンドを利用します。このとき、プロセスにはシグナルというものが送られています。プロセスはシグナルの種類に応じて既定された処理を実行します。trapコマンドを用いると、各シグナル番号に対応する既定の処理を書き換えることができます。 trapコマンド シグナルN1, N2, N3, ...を受けたときに実行するコマンドを...
  • 実行場所を気にしなくてよいシェルスクリプトの作り方
    作り方 シェルスクリプトの冒頭に cd `dirname $0` という一行を追記しておくと、実行場所を気にしなくてよいスクリプトになります。 具体例 /home/vagrant/sample.sh #!/bin/sh cd `dirname $0` pwd 実行権限を付与しておきます。 $ chmod +x /home/vagrant/sample.sh どこから実行しても同じ結果です。 $
  • シェルスクリプトのワイルドカードについて
    ワイルドカードはファイルの名称を補完する機能です。Perlなどの正規表現とは記述方法が異なりますので注意してください。 *は任意の文字列に合致 ?は1文字に合致 []は[]内の任意の1文字に合致 [!] は[]内に含まれない任意の1文字に合致 サンプル $ touch dummy.txt $ ls dumm* dummy.txt $ ls dumm?.txt dummy.txt $ ls [a-z...
さらに読み込む