programing

셸 - 변수에 대한 내용을 파일에 씁니다.

instargram 2023. 4. 22. 08:27
반응형

셸 - 변수에 대한 내용을 파일에 씁니다.

여기서 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명령어는 파일에 텍스트를 쓰는 것이 아니라 파일(파일)에 복사하는 데 사용됩니다.

echovarcontains contains contains contains contains contains contains contains -e플래그로 해석됩니다. 다른 은 '하다'입니다.printfprintf "$var" > "$destdir"변수 내의 이스케이프 문자를 확장하므로 변수에 백슬래시가 포함되어 있으면 파일 내용이 일치하지 않습니다. 「」, 「」이(가) 있기 에,printf하며, "백슬래시"를 할 수 .%sformat 하여 정확한 파일에 합니다.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

반응형