1. ホーム
  2. linux

[解決済み] Bashのスクリプトパラメータ

2022-08-12 13:40:12

質問

このようなシェルスクリプトを作成しようとしています。

ocrscript.sh -from /home/kristoffer/test.png -to /home/kristoffer/test.txt

このスクリプトは、画像ファイルをテキストファイルにocr変換してくれます。今のところ思いついたのはこんな感じです。

#!/bin/bash
export HOME=/home/kristoffer
/usr/local/bin/abbyyocr9 -rl Swedish -if ???fromvalue??? -of ???tovalue??? 2>&1

しかし、どのようにすれば -from-to の値を変更することができます。これを行う方法について何かアイデアはありますか?

どのように解決するのですか?

bashscriptに与えた引数は、変数に表示されます。 $1$2 そして $3 ここで、数字は引数を意味する。 $0 はコマンドそのものである。

引数はスペースで区切られます。 -from-to をコマンドで指定すると、これらの変数の中にも入ってしまうので、この場合は

./ocrscript.sh -from /home/kristoffer/test.png -to /home/kristoffer/test.txt

得ることができます。

$0    # ocrscript.sh
$1    # -from
$2    # /home/kristoffer/test.png
$3    # -to
$4    # /home/kristoffer/test.txt

を省略する方が簡単かもしれません。 -from-to のような、です。

ocrscript.sh /home/kristoffer/test.png /home/kristoffer/test.txt

では、そうなります。

$1    # /home/kristoffer/test.png
$2    # /home/kristoffer/test.txt

欠点は、正しい順序で供給しなければならないことです。コマンドラインでの名前付き引数の解析を簡単にするライブラリもありますが、通常、単純なシェルスクリプトでは、問題がなければ、簡単な方法で済ませるべきでしょう。

では、できること。

/usr/local/bin/abbyyocr9 -rl Swedish -if "$1" -of "$2" 2>&1

をダブルクォートで囲んでいるのは $1$2 は必ずしも必要ではありませんが、二重引用符でくくらないと動作しない文字列があるため、推奨されます。