Solución:
Los argumentos que proporcione a un bashscript aparecerán en las variables $1
y $2
y $3
donde el número se refiere al argumento. $0
es el comando en sí.
Los argumentos están separados por espacios, por lo que si proporciona el -from
y -to
en el comando, también terminarán en estas variables, así que para esto:
./ocrscript.sh -from /home/kristoffer/test.png -to /home/kristoffer/test.txt
Obtendrás:
$0 # ocrscript.sh
$1 # -from
$2 # /home/kristoffer/test.png
$3 # -to
$4 # /home/kristoffer/test.txt
Podría ser más fácil omitir el -from
y el -to
, igual que:
ocrscript.sh /home/kristoffer/test.png /home/kristoffer/test.txt
Entonces tendrás:
$1 # /home/kristoffer/test.png
$2 # /home/kristoffer/test.txt
La desventaja es que tendrás que suministrarlo en el orden correcto. Hay bibliotecas que pueden facilitar el análisis de argumentos con nombre en la línea de comandos, pero generalmente para scripts de shell simples, debe usar la forma fácil, si no hay problema.
Entonces puedes hacer:
/usr/local/bin/abbyyocr9 -rl Swedish -if "$1" -of "$2" 2>&1
Las comillas dobles alrededor del $1
y el $2
no siempre son necesarios, pero se recomiendan, porque algunas cadenas no funcionarán si no las pone entre comillas dobles.
Si no está completamente comprometido con el uso de “desde” y “hasta” como nombres de opciones, es bastante fácil implementar esto usando getopts:
while getopts f:t: opts; do
case ${opts} in
f) FROM_VAL=${OPTARG} ;;
t) TO_VAL=${OPTARG} ;;
esac
done
getopts
es un programa que procesa argumentos de línea de comando y los analiza convenientemente por usted.
f:t:
especifica que está esperando 2 parámetros que contienen valores (indicados por dos puntos). Algo como f:t:v
dice que -v
solo se interpretará como una bandera.
opts
es donde se almacena el parámetro actual. los case
declaración es donde procesará esto.
${OPTARG}
contiene el valor que sigue al parámetro. ${FROM_VAL}
por ejemplo obtendrá el valor /home/kristoffer/test.png
si ejecutó su script como:
ocrscript.sh -f /home/kristoffer/test.png -t /home/kristoffer/test.txt
Como sugieren los demás, si es la primera vez que escribe scripts bash, debería leer algunos conceptos básicos. Este fue solo un tutorial rápido sobre cómo getopts
obras.
Usa las variables "$1"
, "$2"
, "$3"
y así sucesivamente para acceder a los argumentos. Para acceder a todos ellos puede utilizar "[email protected]"
, o para obtener el recuento de argumentos $#
(puede ser útil para comprobar si hay demasiados argumentos o muy pocos).