%EC%9D%80%20%EB%AC%B4%EC%8B%9C%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
저는 Ubuntu 16.04(xenial) 및 Bash 4.3.48(1)을 사용하고 있습니다.
Stephen Kitt의 답변을 바탕으로이번 회의에서, 이름이 지정된 함수의 일부로 다음 명령을 실행해 보았습니다 imb()
.
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" -
함수가 있는 파일을 얻었습니다 imb()
.
source ~/functions.sh
기능
imb() {
drt="/var/www/html"
date="$(date +\%F-\%T)"
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
rm -f "$drt/db-$date.zip"
}
내 질문
zip
다음 오류 와 함께 함수 호출이 실패합니다 .
zip error: Nothing to do! (/var/www/html/db-2018-04-13-22:27:47.zip)
이는 하이픈이 무시되고 있기 때문에 발생하는 것 같습니다.
type -a imb
출력:
imb is a function
imb () {
date="$(date +\%F-\%T)";
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip";
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*";
rm -f "$drt/db-$date.zip"
}
여기에 하이픈이 누락된 것으로 나타났습니다.
내 질문
이 기능이 실패하는 이유/Bash가 하이픈을 무시하는 이유는 무엇입니까?
답변1
사용자 환경에 이전 버전의 함수가 있고 파일을 편집하여 누락된 -
.
파일을 다시 가져오거나 셸을 다시 시작하면 파일에 표시된 함수의 올바른 버전을 얻게 됩니다. 해당 버전이 작동합니다.
이것이 전부입니다. 여기서 설명할 흥미로운 내용은 없습니다. 환경이 환경을 설정한 파일과 동기화되지 않고 종종 일시적인 혼란을 초래하는 매우 일반적인 상황이지만 이 경우처럼 쉽게 수정할 수 있습니다.