小编典典

Bash中的脚本参数

linux

我正在尝试制作应该像这样使用的shell脚本:

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价值观。关于如何做的任何想法?


阅读 389

收藏
2020-06-02

共1个答案

小编典典

您提供给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

缺点是您必须以正确的顺序提供它。有一些库可以使在命令行上解析命名参数变得更加容易,但是通常对于简单的shell脚本,如果没有问题,则应该使用简单的方法。

然后,您可以执行以下操作:

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

$1和周围的双引号$2并不总是必需的,但是建议使用双引号,因为如果不将它们放在双引号之间,则某些字符串将不起作用。

2020-06-02