2012-09-19 6 views
0

나는이 DB를 덤프이 스크립트 :전달 문자열

cat /usr/bin/dbbkup 
#!/bin/bash 
mysqldump -uroot -proot db > db_$(date +%d%H%M%S).sql 

나는과 같이 실행합니다

dbbkup && ls -atlr 

하지만이 스크립트에 인수를 전달할 수있는 방법을 접두사합니다 DB 덤프? E.G.

+0

나는 위에있는 것을 시도했다. 나는 Bash 전문가가 아니므로 왜 stackoverflow 전문가의 도움을 찾고 있습니다. – Nadine

답변

0

배쉬 스크립트를 위해 매개 변수를 참조, 예컨대 :

dbbkup "changed name of field" 

은 스크립트에서 변수 $1된다.

그래서 날짜 및 특정 접두사를 기반으로 사용자 정의 파일 이름을 가진 DB 덤프를 만들려면 예를 계속, 명령은 다음과 같습니다

./dbbkup.sh prefix 

를하고 스크립트의 내용은 다음과 같습니다

#!/bin/bash 
mysqldump -uroot -proot db > db_$1_$(date +%Y%m%d%H%M%S).sql 

그러면 db_prefix_20120919104317.sql이라는 파일이 생성됩니다. 나는 더 많은 정보를 가지고 있기 때문에 날짜 형식을 변경했으며, 디렉토리 목록에서 이름으로 정렬하고 시간순으로 정렬 할 수도 있습니다.

또한 bash 매개 변수를 사용하는 방법에 대한 예제로 가정합니다. 매개 변수가 생성 된 출력에 아무런 영향을 미치지 않으므로 파일 이름 만 사용하십시오.이 경우 이름을 하드 코드하지 마십시오. 파일에 대해? 동일한 (업데이트되었지만) 데이터가있는 여러 이름의 파일에 대한 사용 사례가 표시되지 않습니다.

+0

완벽한! 건배! :) – Nadine

+0

스크립트가 인수에서 공백을 처리 할 수 ​​있어야한다면 ("필드 이름 변경"과 같이) 모든 용도에 대해 큰 따옴표를 넣어야합니다 : mysqldump -uroot -proot db> db_ $ 1 _ $ (날짜 + % Y % m % d % H % M % S) .sql " –

+0

그래, 그게 중요한 포인트 야. 파일 이름의 공백이 실제 예제에서는 제거되었지만 초기 매개 변수가 다른 사람을 혼동시킬 수 있음을 알 수 있습니다. 그것을 지적 해 주셔서 감사합니다. – Clarkey

0

) =

#!/bin/bash 
mysqldump -uroot -proot db > db_$(arg)_$(date +%d%H%M%S).sql 

감사 $ 1이됩니다 bash는 스크립트 물려 첫 번째 매개 변수를 :

dbbkup -arg "changed name of field" && ls -atlr 

는 다음과 같이 스크립트를 변경합니다. 이 같은

#!/bin/bash 
mysqldump -uroot -proot db > $1db_$(date +%d%H%M%S).sql 

전화를 :

dbbkup prefix