English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux에서 변수 정의 스크립트 공유

이 기사는 Linux에서 변수 정의 스크립트를 공유하여 참고하도록 합니다. 구체적인 내용은 다음과 같습니다

기본적으로 두 개의 비슷한 코드가 있지만, 변수만 변경되었고 다른 것은 변경되지 않았습니다. 그러나 실행 중에 다른 결과가 나타났습니다

코드 1:

vi back.sh
#backup import file,such as /etc/rc.local /var/spool/cron/root
IP=$(ifconfig eth1|sed -nr '2s#.*addr:(.*) B.*#\1#gp')
Path=/backup
if [ $(date +%w) -eq 0 ]
then
  Time=$(date +%F-%w -d "-1 day")
else
  Time=$(date +%F "-1 day")
fi
mkdir $Path/$IP -p
cd / &&\
tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/flag_$Time.log &&\
rsync -azv $Path/ [email protected]::backup --password-file=/etc/rsyncd.password &&\
find $Path/ -type f \( -name "*.log" -o -name "*.tar.gz" \) -mtime +7 |xargs rm –f
"back.sh" 15L, 628C written

코드 2:

vi back.sh
#backup import file,such as /etc/rc.local /var/spool/cron/root
IP=$(ifconfig eth1|sed -nr '2s#.*addr:(.*) B.*#\1#gp')
Path=/backup
if [ $(date +%w) -eq 0 ]
then
  Time=$(date +%F-%w -d "-1 day")
else
  Time=$(date +%F "-1 day")
fi
mkdir $Path/$IP -p
cd / &&\
tar zcfh /backup/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/flag_$Time.log &&\
rsync -azv $Path/ [email protected]::backup --password-file=/etc/rsyncd.password &&\
find $Path/ -type f \( -name "*.log" -o -name "*.tar.gz" \) -mtime +7 |xargs rm –f
"back.sh" 15L, 628C written

위 코드는打包 상태를 수정한 것뿐입니다. tar zcf /backup와 변수 tar $Path를 정의합니다/결과가 다를 경우가 발생합니다. 첫 번째 실행 결과는 다음과 같습니다:

코드 1 실행 결과:

[root@nfs01 backup]# ls
172.16.1.31 backup_2017-12-23-6.tar.gz flag_2017-12-23-6.log

코드 2 실행 결과:

[root@nfs01 backup]# ls
172.16.1.31

코드 1과 코드 2의 원리는 같지만, 왜 실행 결과가 다른지는 모르겠습니다. 개인적으로는 환경 변수의 디렉토리의 시작 부분이 원인이라고 생각합니다. 이렇게 되어 이전 환경 변수가 무효화되었습니다. 두 번打包했습니다:

테스트 스크립트

[root@nfs01 scripts]# sh -x back.sh 
++ sed -nr '2s#.*addr:(.*) B.*#\1#gp'
++ ifconfig eth1
+ IP=172.16.1.31
+ Path=/backup
++ date +%w
+ '[' 4 -eq 0 ']'
++ date +%F -d '-1 day'
+ Time=2017-12-20
+ mkdir /backup/172.16.1.31 -p
+ cd /
+ tar zcfh /backup/172.16.1.31/backup_2017-12-20.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs
+ md5sum /backup/172.16.1.31/backup_2017-12-20.tar.gz
+ rsync -azv /backup/ [email protected]::backup --password-file=/etc/rsyncd.password
sending incremental file list
172.16.1.31/backup_2017-12-20.tar.gz
172.16.1.31/flag_2017-12-20.log
sent 1128 bytes received 65 bytes 2386.00 bytes/sec
total size is 2960 speedup is 2.48
+ xargs rm -f
+ find /backup/ -type f '(' -name '*.log' -o -name '*.tar.gz' ')' -mtime +7

테스트 스크립트에는 문제가 없지만, 원인을 알 수 없습니다. 대신, 대신 답변을 주시기를 바랍니다. 감사합니다!

 이것이 이 문서의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한, 나아가 다른 사람들도 지지해 주시기를 바랍니다.

선언: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두 소유합니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반 내용이 있음을 발견하면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(보고할 때는 #을 @으로 변경하십시오. 관련 증거를 제공하고, 사실이 확인되면, 이 사이트는 즉시 위반 내용을 삭제합니다。)

좋아하는 것 추천