LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Завязывайте с example=$(cat ~/example), до добра такой стиль не доведёт. если надо сравнивать файлы - используйте программу для сравнения файлов.

Ну иногда таки надо сравнивать содержимое файла и сформированное значение в переменной, скажем чтобы вначале сравнить и только если изменилось, то изменить файл. У меня была такая задача. Но да, у example=$(cat ~/example) есть неприятная особенность — последний <CR> неопределен, есть ли, нет ли - в переменной его не будет. Так что для себя я сделал такую функцию:

read_file_into_var() {
        IFS= read -r -d '' $1 < "$2"
}
Удобство read тут ещё в том, что $1 превращает в косвенное имя, то есть функция вызывается с именем переменной и не надо извращаться с глобальными переменными или eval. И заметьте - никакого fork-а тут нет, в отличии от cmp/cat.

Исправление vodz, :

Завязывайте с example=$(cat ~/example), до добра такой стиль не доведёт. если надо сравнивать файлы - используйте программу для сравнения файлов.

Ну иногда таки надо сравнивать содержимое файла и сформированное значение в переменной, скажем чтобы вначале сравнить и только если изменилось, то изменить файл. У меня была такая задача. Но да, у example=$(cat ~/example) есть неприятная особенность — последний <CR> неопределен, есть ли, нет ли - в переменной его не будет. Так что для себя я сделал такую функцию:

read_file_into_var() {
        IFS= read -r -d '' $1 < "$2"
}
Удобство read тут ещё в том, что $1 превращает в косвенное имя, то есть функция вызывается с именем переменной и не надо извращаться с глобальными переменными или eval.

Исправление vodz, :

Завязывайте с example=$(cat ~/example), до добра такой стиль не доведёт. если надо сравнивать файлы - используйте программу для сравнения файлов.

Ну иногда таки надо сравнивать содержимое файла и сформированное значение в переменной, скажем чтобы вначале сравнить и только если изменилось, то изменить файл. У меня была такая задача. Но да, у example=$(cat ~/example) есть неприятная особенность — последний <CR> неопределен, есть ли, нет ли - в переменной его не будет. Так что для себя я сделал такую функцию:

read_file_into_var() {
        IFS= read -r -d '' $1 < "$2"
}
Удобство read тут ещё в том, что $1 правращает в косвенное имя, то есть функция вызывается с именем переменной и не надо извращаться с глобальными переменными или eval.

Исходная версия vodz, :

Завязывайте с example=$(cat ~/example), до добра такой стиль не доведёт. если надо сравнивать файлы - используйте программу для сравнения файлов.

Ну иногда таки надо сравнивать содержимое файла и сформированное значение в переменной, скажем чтобы вначале сравнить и только если изменилось, то изменить файл. У меня была такая задача. Но да, у example=$(cat ~/example) есть неприятная особенность — последний <CR> неопределен, есть ли, нет ли - в переменной его не будет. Так что для себя я сделал такую функцию:

read_file_into_var() {
        IFS= read -r -d '' $1 < "$2"
}
Удобство read тут ещё в том, что $1 правращает в косевенное имя, то есть функция вызывается с именем переменной и не надо извращаться с глобальными переменными или eval.