![파일을 수정하지 않고 cat 명령 출력에 값을 추가하려면 어떻게 해야 합니까?](https://linux55.com/image/165404/%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%88%98%EC%A0%95%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20cat%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%97%90%20%EA%B0%92%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
직장에는 mysql 데이터베이스 서버에 SQL 스크립트를 적용하는 데 사용해야 하는 사용자 정의 스크립트가 있는데 이를 자유롭게 수정할 수는 없습니다. 사용자 정의 스크립트의 명령줄 옵션은 매우 제한적입니다. 예를 들어, 기본 데이터베이스 지정을 허용하지 않습니다. 즉, use database
올바른 디렉토리로 전환 해야 합니다 .
create table
이제 데이터베이스에 스크립트를 적용하고 싶습니다 . 그러나 스크립트를 성공적으로 실행하려면 use database
첫 번째 줄에 명령문이 필요합니다.create table
다음이 효과가 있었다면 여기에 질문을 게시할 필요가 없습니다.
echo 'use database' | cat create_tables.sql | work_send_command_to_db.sh
파일을 수정하지 않고도 로컬에서 목표를 달성할 수 있기를 정말로 원합니다. 이는 위의 예제 명령에서 create_tables.sql
git이 이미 체크인되었기 때문입니다. create_tables.sql
스크립트를 적용할 때마다 저장소를 재설정하고 싶지 않습니다 .
답변1
echo
의 출력 이 아닌 최종 스크립트에 그룹으로 두 명령의 출력을 파이프하려고 합니다 cat
. 따라서 { ...; }
다음 명령을 사용하거나 그룹화하십시오 (...)
.
{ echo 'use database'; cat create_tables.sql; } | work_send_command_to_db.sh
또는:
( echo 'use database'; cat create_tables.sql ) | work_send_command_to_db.sh