Как заставить скрипт счетчика bash работать при его выполнении из другого скрипта? [дубликат]

Una solución alternativa para bash
q='"'; t=( "${@/#/$q}" ); u=( "${t[@]/%/$q}" ); echo ${u[@]}

Bash no admite sustituciones anidadas, así que gracias ahttps://stackoverflow.com/questions/12303974/assign-array-to-variable#12304017por mostrar cómo reasignar una matriz. Consulteman bash(https://linux.die.net/man/1/bash)para obtener detalles sobre arreglos, expansión y sustitución de patrones (en la expansión de parámetros ).

Análisis

Bash coloca los parámetros de la línea de comando como una matriz en$@

qmantiene el carácter de cita.

Las comillas dobles alrededor de la expansión de parámetros ${... }conservan los parámetros individuales como elementos distintos y envolverlos en ( )le permite asignarlos como una matriz a una variable.

/#/$qen una expansión de parámetros sustituye el comienzo del patrón (como expresión regular^)con el carácter de comillas.

/%/$qen una expansión de parámetros sustituye el final del patrón (como expresión regular$)con el carácter de comillas.

Caso de uso :consultando MySQL para obtener una lista de direcciones de correo electrónico desde la línea de comando

Hay algunos cambios en las declaraciones anteriores para usar un carácter de comillas diferente, agregar comas entre los parámetros y eliminar la coma final. Y, por supuesto, estoy siendo malo al poner la contraseña en la invocación de mysql. Entonces demándame.

q="'"; t=( "${@/#/$q}" ); u="${t[@]/%/$q,}"; v="u.email in( ${u%,} )"
mysql -uprod_program -h10.90.2.11 -pxxxxxxxxxxxx my_database <
0
22.01.2019, 01:56
2 ответа

похоже, что ваша оболочка пытается оперировать переменной number++, а не применять арифметическую операцию к переменной number. Вероятно, это связано с тем, что синтаксис ++не поддерживается вашей оболочкой.

Чтобы обойти это, вы можете указать оболочку, в которой вы хотите, чтобы скрипт выполнялся. Для этого добавьте

#!/bin/bash

в качестве первой строки вашего скрипта.

1
28.01.2020, 02:30

Используйте

#!/bin/bash

или

bash counter.sh

или сделать его совместимым с

#!/bin/sh

Как правило, следует использовать IDE или вставить свой код в https://www.shellcheck.net, чтобы избежать подобных проблем.

1
28.01.2020, 02:30

Теги

Похожие вопросы