![echo 명령에서 있는 그대로 나열하기 위해 env 파일($ 문자 포함)을 어떻게 만들 수 있습니까?](https://linux55.com/image/145919/echo%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EC%9E%88%EB%8A%94%20%EA%B7%B8%EB%8C%80%EB%A1%9C%20%EB%82%98%EC%97%B4%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20env%20%ED%8C%8C%EC%9D%BC(%24%20%EB%AC%B8%EC%9E%90%20%ED%8F%AC%ED%95%A8)%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%A7%8C%EB%93%A4%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
파일의 따옴표 안에 있는 내용을 반영하는 스크립트에서 호출된 파일을 만들려고 합니다. 그냥 생략했습니다 $
.
이것이 내가하려는 일입니다.
echo -e "export ORACLE_BASE=/oracle/APP/grid \n
export ORACLE_HOME=/oracle/APP/grid/12.1.0/grid\n
export PATH=$ORACLE_HOME/bin:$PATH\n export ORACLE_SID=+ASM”>/home/oragrid/ASM.env
echo
하지만 파일에 제대로 들어가지 않습니다 .
답변1
echo -e
이식성을 목적으로 하는 스크립트에는 사용 하지 마십시오 . 내장된 셸을 사용하면 printf()
이전과 마찬가지로 모든 작업을 수행할 수 있으며 셸 전체에서 호환성을 계속 유지할 수 있습니다. 그러나 요구 사항에 따라 접두사가 붙은 변수를 확장하지 않고 여러 줄 문자열을 저장하려면 $
here-doc를 사용하십시오.
cat << 'EOF' > /home/oragrid/ASM.env
export ORACLE_BASE=/oracle/APP/grid
export ORACLE_HOME=/oracle/APP/grid/12.1.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=+ASM
EOF
EOF
이렇게 하면 변수를 확장하는 대신 모든 것이 그대로 유지됩니다 .