날짜 인쇄 명령을 자동화하기 위해 bash 스크립트를 작성하려고 하는데 안타깝게도 작동하지 않습니다.
다음은 스크립트의 일부입니다... 저는 대부분의 제안을 따르고 "EOF"를 사용했지만 여전히 작동하지 않습니다.
#!/bin/bash
cat<<'EOF'>/etc/yum.repos.d/local.repo
[local]
name=Red Hat Enterprise Linux $releasever - $basearch - Base
baseurl=file:///home/user1/updates-$(date +%d%b%y)
gpgcheck=0
enabled=1
EOF
누구든지 도와줄 수 있나요?
답변1
여기에 귀하의 문서를 인용하지 마십시오. 초기 토큰의 일부를 인용하면 EOF
셸이 문서에서 확장을 수행하지 못하게 됩니다. 너가 ~ 한 뒤로생각하다셸에서 명령 대체를 처리하려면 date
문서를 인용되지 않은 상태로 유지해야 합니다.
$releasever
확장되지 않으 려면 다음과 같이 그 전에 이스케이프 처리 $basearch
해야 합니다 .$
#!/bin/sh
cat <<EOF >/etc/yum.repos.d/local.repo
[local]
name=Red Hat Enterprise Linux \$releasever - \$basearch - Base
baseurl=file:///home/user1/updates-$(date +%d%b%y)
gpgcheck=0
enabled=1
EOF
/bin/sh
또한 이 스크립트에는 특정 내용이 포함되어 있지 않으므로 가장 잘 실행됩니다 bash
.
생성하려는 파일이 TOML 파일인 경우 다음과 같이 생성할 수도 있습니다.
tomlq -n -t \
--arg name 'Red Hat Enterprise Linux $releasever - $basearch - Base' \
--arg baseurl "file:///home/user1/updates-$(date +%d%b%y)" \
--argjson gpgcheck 0 \
--argjson enabled 1 \
'.local = $ARGS.named' >/etc/yum.repos.d/local.repo
이것은 tomlq
(TOML 파서 래퍼주변 jq
) 및 TOML 출력 생성
[local]
name = "Red Hat Enterprise Linux $releasever - $basearch - Base"
baseurl = "file:///home/user1/updates-29May22"
gpgcheck = 0
enabled = 1
답변2
글쎄요, 답을 찾은 것 같아요... ""를 잘못 사용했습니다. 그래서 스크립트를 다음과 같이 수정했습니다.
#!/bin/bash
cat<<EOF>/etc/yum.repos.d/local.repo
[local]
name=Red Hat Enterprise Linux \$releasever - \$basearch - Base
baseurl=file:///home/user1/updates-$(date +%d%b%y)
gpgcheck=0
enabled=1
EOF