2014-12-08 3 views
2

Я хотел бы извлечь, затем заменить на строку. Есть ли способ сделать это в одной команде?операция двойной строки сразу

Предположим, у меня есть эта переменная:

var="y=2,4" 

Я хочу это:

2.4 

с вещью, как ${${var#*=}/,/.}

+0

Вы ожидали переменные 'var' и' y' и чтобы иметь значение '2,4 '? –

+0

Нет, нет ... просто var – odessos

ответ

0

В BASH вы не можете выполнять несколько строковых операций за один раз, как это.

Это технически не одну операцию, но в BASH вы можете сделать:

var="y=2,4" 
[[ "$var" =~ ^.*=(.+)$ ]] && echo ${BASH_REMATCH[1]/,/.} 
2.4 
0

Вы можете попробовать sed

$ var="y=2,4" 
$ sed 's/^.*=//;s/,/./g' <<< "$var" 
2.4 
0
echo "$var" | sed -n 's/y=//p' | tr , . 
+1

[Всегда указывайте свои переменные] (https://unix.stackexchange.com/questions/171346/security-implications-of-forgetting-to-quote-a-variable-in-bash -posix-shells) –

+0

это лучше. – outdev

+1

Нет, вам действительно нужны двойные кавычки. –

Смежные вопросы