Estoy mirando el código que se muestra a continuación y comprueba la entrada si los argumentos de fila / columna comienzan con -ro -c. ¿Qué ${1:0:2}significa en este contexto?
rowArgName="-r"
colArgName="-c"
if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ]
then
   echo $correctCmdMsg >&2
   exit 1
fi
                
                    
                        bash
                                shell-script
                                
                    
                    
                        usuario165213
fuente
                
                fuente

bash.getoptogetoptshacerte la vida más fácil (o la vida de quien hizo esto).Respuestas:
Es un patrón de shell de expansión de subcadena (subclase de expansión de parámetros).
El formato es:
y la indexación comienza en 0.
Digamos que tiene una variable
foo, luego${foo:0:2}produce los dos primeros caracteres (desde la posición 0 a los siguientes 2).Ejemplo:
En su caso, el primer número, se
1refiere al nombre de la variable$1, que es el primer argumento pasado a través de la línea de comando (en el programa principal) o el primer argumento pasado a la función.Entonces, en su caso
"${1:0:2}":comenzar a extraer la subcadena a partir del índice 0, es decir, el primer carácter
y continuar hasta los próximos dos personajes
así que después de la operación obtendrá los dos primeros caracteres (indexados en 0 y 1) de la cadena de entrada.
El
[ "${1:0:2}" != $rowArgName ]y[ "${1:0:2}" != $colArgName ]están comprobando si la subcadena de salida es igual a algunas otras cadenas.fuente
-co-r, lo que probablemente se haya implementado mejorgetoptsUn pequeño extracto de
man bash:fuente
Esta es una extracción de subcadena simple de una variable. La variable en cuestión es el primer parámetro del script (que es
1).Si tengo una variable, FOO, puedo ver los dos primeros caracteres de su valor con
${FOO:0:2}. Lo mismo se está haciendo en su ejemplo con el primer argumento.fuente