2015-07-22 2 views
3

Можете ли вы объяснить следующий код, пожалуйста, (предположим, что HOST содержит строку):Что делает этот отрывок сценария оболочки BASH?

HOST=${HOST//$'\n'/} 

Если вышеуказанная линия была объявлена ​​внутри функции, будет переменная «HOST» доступны для других функций в одном сценарии ?

ответ

9

Согласно подстроки Замена п от ABS guide:

HOST=${HOST//$'\n'/} 

удаляет все вхождения символа новой строки $'\n' в переменной HOST.

Если вышеуказанная линия была объявлена ​​внутри функции, будет переменная HOST доступны для других функций в одном сценарии?

Да, при условии, что HOST не был объявлен с использованием bash local ключевое слово.

+0

Спасибо, это было очень полезно, я прочитаю остальную часть руководства, которое вы связали. Второй вопрос заключался в том, чтобы прояснить то, что, как я думал, я уже знал, но по какой-то причине эта переменная пуста при использовании в другой функции. – ViniH

+1

@ViniH: если обе функции вызываются в рамках одного процесса (вы не принимаете родителя к дочернему или дочернему по отношению к родительскому сообщению), то я не вижу причин для такого неправильного поведения. Если только переменная 'HOST' содержит только символы новой строки, как только они удаляются в одной функции, другая может действительно видеть переменную как пустую. –

+0

Благодарим вас, что в ходе дальнейшего расследования он порождает дочерние потоки. – ViniH