В комментарии ОП дала рабочий ответ (должен опубликовать его как ответ):
#!/bin/bash
read input
a=$(echo $input | cut -d '"' -f2)
b=$(echo $input | cut -d '"' -f4)
echo sum: $(( a + b))
echo difference: $(( a - b))
Это будет работать для пользовательского ввода в точности как a="8", b="5"
.
Никогда не доверяйте вводу.
Возможно, вы захотите добавить чек
if [[ ${input} =~ ^[a-z]+=\"[0-9]+\",\ [a-z]+=\"[0-9]+\"$ ]]; then
echo "Use your code"
else
echo "Incorrect input"
fi
И когда вы добавляете проверку, вы можете захотеть выполнить ввод (после замены запятой на точку с запятой).
input='testa="8", testb="5"'
if [[ ${input} =~ ^[a-z]+=\"[0-9]+\",\ [a-z]+=\"[0-9]+\"$ ]];
then
eval $(tr "," ";" <<< ${input})
set | grep -E "^test[ab]="
else
echo no
fi
EDIT:
@PesaКомментировал правильно о BASH_REMATCH
:
Когда вы используете bash и тест на входе, вы можете использовать
if [[ ${input} =~ ^[a-z]+=\"([0-9]+)\",\ [a-z]+=\"([0-9])+\"$ ]];
then
a="${BASH_REMATCH[1]}"
b="${BASH_REMATCH[2]}"
fi