셸 스크립트 : 파일이 존재하지 않는 경우 파일에 여러 줄 내용을 쓰려면 어떻게해야합니까? 작성해야합니다. server {

/opt/nginx/conf.d/default.conf쉘 스크립트를 통해이 내용으로 파일을 작성하고 존재하지 않는 경우 파일을 작성해야합니다.

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    root /usr/share/nginx/html;
}

쉘 스크립트를 통해 여러 줄 컨텐츠를 작성하는 방법

디렉토리를 만들었습니다

sudo mkdir -p /opt/nginx/conf.d

그러나 나는 파일을 쓰는 법을 모른다.



답변

요약 : >>추가 [ -f file ]하고 테스트 하는 데 사용 합니다.

시험

if [ ! -f myfile ]
then
   cat <<EOF > myfile
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name $server ;
    root /usr/share/nginx/html;
}
EOF
fi
  • 구문을 cat <<EOF여기 문서 “라고합니다.
  • $server 값으로 대체되거나 정의되지 않은 경우 비어 있습니다.
  • 지적했듯이 작은 따옴표 'EOF'를 사용 하여 var가 있으면 교체하지 않아도됩니다.
  • 여러 개의 반향을 가질 수도 있습니다 (반향이 너무 많으면 유지하기가 어려울 수 있음)

    echo "## foo.conf" > foo.conf
    echo param1=hello >> foo.conf
    echo param2=world >> foo.conf
    

선행

bash에는 직접 접두사가 없으며 임시 파일을 사용하십시오.

mv file file_tmp
cat new_content file_tmp > file
rm file_tmp

또는 편집

sed -i -e '1r new_file' -e 'wq' file

답변

/opt/nginx/conf.d/default.conf 파일이 없으면 정적 문자열을 파일로 print (f)하십시오.

[ -f /opt/nginx/conf.d/default.conf ] || printf 'server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    server_name _;\n    root /usr/share/nginx/html;\n}\n' > /opt/nginx/conf.d/default.conf