Цитирование ANSI C для табуляции и новой строки иногда не работает

Еще одна проблема с примером кода, вы обычно хотите использовать двойные кавычки на любом из итераторов , поскольку вы используете их в цикле for.

Ваш код:

for javaFile in *.java ;
    {
        echo "The file $javaFile has : " >> ~/Desktop/externalServers.txt
        grep -E '^[^/]{2}.*http' $javaFile >> ~/Desktop/externalServers.txt     

        grep -E '^[^/]{2}.*ftp' $javaFile  >> ~/Desktop/externalServers.txt

Должен быть:

for javaFile in *.java ; do
        echo "The file $javaFile has : " >> ~/Desktop/externalServers.txt
        grep -E '^[^/]{2}.*http' "$javaFile" >> ~/Desktop/externalServers.txt

        grep -E '^[^/]{2}.*ftp' "$javaFile"  >> ~/Desktop/externalServers.txt

0
20.12.2018, 21:18
1 ответ

Поскольку вы не указали переменную в:

echo $A

он подлежит разделению и объединению. Первый шаг — расширение содержимого переменной:

echo a $'\n' b $'\n' c--, где биты $'\n'представляют фактические символы новой строки.

Затем различные части разбиваются на $IFS, в результате чего:

echo a b c

Затем, поскольку нет подстановочных знаков для создания дополнительных имен файлов, строки передаются в echo.

Когда вы заключаете переменную в кавычки с помощью echo "$A", вы запрещаете разделение и подстановку.

См. изменение самостоятельно, если вы модифицируете IFS:

oIFS=$IFS
IFS=
echo $A
IFS=$oIFS
1
28.01.2020, 02:41

Теги

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