2010-01-27 4 views

답변

5
sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql | mysql -D WAR 
+1

입력 리디렉션이 필요하지 않습니다. – ghostdog74

0
mysql -D WAR < <(sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql) 
1

그냥 좀 더 설명하기 위해 명령 줄 입력의 리디렉션의 경우를 제외하고, 왼쪽에서 오른쪽에서 실행됩니다. 그래서 첫 번째가 작동하지 않는 이유는 mysql의 출력을 sed로 보내고 'WAR.sql'파일에서 sed로 입력을 리디렉션하려고했기 때문입니다.

두 번째 경우에는 셸이 [존재하지 않는] 파일을 열려고했음을 의미하는 명령 (이 경우 sed)을 제외하고 mysql에서 파일 리디렉션을 사용하고 있습니다. 현재 디렉토리에서 'sed'라는 이름으로. 다음 입력 리다이렉션은 쉘이 파싱까지도 그것을 혼란에 빠뜨렸다면 아마 혼란 스러울 것이다.

나는 당신이 원하는 것이라고 생각하는 것을 달성하기위한 가장 간단한 해결책으로 gbacon의 대답을 믿고 (그리고 투표 한).

6
sed "s/2000/$START/g;s/2009/$END/g" WAR.sql | mysql -D WAR 
+0

예, 허용 된 답변보다 좋습니다. –

관련 문제