쉘 변수를 파일의 내용으로 설정하는 우아한 방법이 있습니까?


11

파일에 구성 데이터가 있다고 가정 해보십시오 config. 편의상이 데이터를 쉘 변수에로드하고 싶습니다 CONFIG_DATA.

분명히 나는 ​​할 수 있습니다 :

CONFIG_DATA="$(cat config)"

그러나 이것은 다소 쓸모없는cat 느낌 입니다. 이것이 유일한 방법입니까? 아니면 더 우아한 방법이 있습니까?

대답은 POSIX를 선호하지만 쉘을 사용할 수 있습니다.


2
이와 같이 메모리에서 전체 파일을 읽는 것은 파일 작성 방법에 관계없이 거의 항상 나쁜 생각입니다.
Satō Katsura

2
@SatoKatsura 어떤 경우에는 매우 사실입니다. 그러나이 질문의 목적 상 파일이 매우 작다고 가정 할 수 있으므로 큰 문제는 아닙니다.
strugee

1
@SatoKatsura : 왜?
RemcoGerlich

답변:


23

Bash와 Z 셸에서 적어도 더 빠른 방법이 있습니다.

CONFIG_DATA=$(<config)

Bourne Again 쉘의 매뉴얼 페이지에서 인용하려면 :

대체 명령 $ (cat file)은 동일하지만 더 빠른 $ (<file)로 대체 될 수 있습니다.


1
나는 이것이 좋은 옵션이라고 생각하지 않습니다. 고양이의 쓸모없는 사용에 대한 OP의 감정이 무엇이든간에 OP의 예는 대부분의 Bash 사용자가 이해할 수있을만큼 간단합니다. 또한 이식성이 뛰어납니다. 이제는 $(<file)훨씬 덜 일반적이므로 WTF가 훨씬 많이 발생할 수 있습니다. 이러한 구성으로 변수에로드 할 경우이 작업으로 인한 속도 증가는 무시할 수 있습니다.
MatthewRock

6
@MatthewRock은 매우 나쁜 습관이 많고 일반적이며 친숙하다는 점을 참고하십시오. 고양이의 쓸모없는 사용은 하나의 예 for i in $(cat file); do ...입니다. 그것들이 일반적이라는 것은 나쁜 도구를 계속 사용하는 이유가 아닙니다. 고양이의 이러한 특정 사용이 나쁜 일이라고 말할 수는 없습니다. 더 휴대용 방법이 있는지 확실하지 않습니다. 그 공통적이고 친숙한! = 좋았습니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.