셸 - 변수에 대한 내용을 파일에 씁니다.
여기서 called((((((((((((()의 내용을 복사하고 싶다.var
을 사용하다
은 다른 에 됩니다.destfile
이거 하는 데 문제가 있어요.제가 시도한 것은 다음과 같습니다.
cp $var $destfile
명령어dd... 명령어에서도.은 '이러다'가 '이러다'라고 했을 것이다.$var
디렉토리를 참조하고 있었기 때문에, 그 디렉토리를 찾을 수 없었다.
이걸 어떻게 극복하지?
하다를 사용하세요.echo
★★★★★★★★★★★★★★★★★★:
var="text to append";
destdir=/some/directory/path/filename
if [ -f "$destdir" ]
then
echo "$var" > "$destdir"
fi
if
$destdir
을 사용하다
>
는 파일을 잘라낸 후 텍스트를 추가합니다. $var
내용에 는, 「사용할 수 없다」를 사용합니다.>>
★★★★
echo "$var" >> "$destdir"
cp
명령어는 파일에 텍스트를 쓰는 것이 아니라 파일(파일)에 복사하는 데 사용됩니다.
echo
가 var
contains contains contains contains contains contains contains contains -e
플래그로 해석됩니다. 다른 은 '하다'입니다.printf
printf "$var" > "$destdir"
변수 내의 이스케이프 문자를 확장하므로 변수에 백슬래시가 포함되어 있으면 파일 내용이 일치하지 않습니다. 「」, 「」이(가) 있기 에,printf
하며, "백슬래시"를 할 수 .%s
format 하여 정확한 파일에 합니다.format specificator format 、 format specificator 、 format format format format format format format 。
printf "%s" "$var" > "$destdir"
변수가 다음과 같은 경우 위의 답변 중 어느 것도 작동하지 않습니다.
- 로부터 시작하다
-e
- 로부터 시작하다
-n
- 로부터 시작하다
-E
- 에는 를 contains contains a a가 되어 있습니다.
\
n
- 추가 줄바꿈을 뒤에 추가하지 마십시오.
따라서 임의의 문자열 내용에 의존할 수 없습니다.
bash에서는 "여기 문자열"을 다음과 같이 사용할 수 있습니다.
cat <<< "$var" > "$destdir"
아래 Ash의 코멘트에서도 알 수 있듯이, @Trebawa의 답변(나와 같은 방에서 작성!)은 다음과 같습니다.printf
cat
.
위의 모든 것은 작동하지만 애초에 발생할 필요가 없는 문제(escape 및 특수 문자)에 대처해야 합니다.셸에 의해 변수가 확장되는 경우의 특수 문자.애초에 (변수 확장)을 하지 마십시오.변수를 확장하지 않고 직접 사용합니다.
또한 변수에 암호가 포함되어 있고 해당 암호를 파일에 복사하는 경우 셸 명령의 트레이스/명령어 에코에 의해 암호가 노출될 수 있으므로 명령줄에서 확장 기능을 사용하지 않는 것이 좋습니다. 모든 은 ,, 용, 용, 용을 사용합니다.$var
는 변수 내용을 셸의 트레이스 및 로깅에 노출시킴으로써 잠재적인 보안 위험을 가질 수 있습니다.
이미 내보낸 변수의 경우 다음을 사용합니다.
printenv var >file
즉, OP 질문의 경우:
printenv var >"$destfile"
주의: 변수 이름은 대소문자를 구분합니다.
경고:printenv로 인쇄하기 위해 변수를 내보내는 것은 좋은 생각이 아닙니다.비밀을 포함하는 내보내기되지 않은 스크립트 변수가 있는 경우 이를 내보내면 향후 모든 하위 프로세스에 해당 변수가 노출됩니다(예:export -n
).
내가 제대로 이해했다면 따라하고 싶겠지?$var
파일(문자열인 경우)에 입력합니다.
echo $var > $destdir
"변수 내용 복사"라고 하면 해당 변수에 파일 이름이 포함되어 있습니까, 아니면 파일 이름이 포함되어 있습니까?
당신의 질문으로 미루어 짐작하건대$var
에, 파일에 카피하는 내용을 나타냅니다.
$ echo "$var" > "$destdir"
그러면 $var 값이 $destdir라는 파일에 에코됩니다.따옴표를 적어 둡니다."$var"는 따옴표로 묶는 것이 매우 중요합니다.이름에 공백이 있는 경우 "$destdir"에 대해서도 사용합니다.추가 방법:
$ echo "$var" >> "$destdir"
빌드 프로세스에서 conf 파일을 편집해야 할 수 있습니다.
echo "db-url-host=$POSTGRESQL_HOST" >> my-service.conf
이 솔루션을 테스트하기 전에export POSTGRESQL_HOST="localhost"
언급URL : https://stackoverflow.com/questions/11618696/shell-write-variable-contents-to-a-file
'programing' 카테고리의 다른 글
셸 변수에서 웹 페이지 내용을 가져오려면 어떻게 해야 합니까? (0) | 2023.04.22 |
---|---|
PowerShell 2.0에서 디렉토리 전체를 반복적으로 삭제하는 방법 (0) | 2023.04.22 |
이 WCF 오류는 무엇을 의미합니까? "커스텀 도구 경고: wsdl:portType을 가져올 수 없습니다. (0) | 2023.04.22 |
비동기 네트워크 요청이 포함된 루프의 실행이 완료될 때까지 기다립니다. (0) | 2023.04.22 |
Swift에서 UTC 시간대(ISO 8601, RFC 3339)의 소수 초로 포맷된 날짜 타임스탬프를 해석/작성하려면 어떻게 해야 합니까? (0) | 2023.04.22 |