텍스트 파일에 명령을 작성한 다음 이를 파일로 터미널에 로드할 수 있습니까? 그렇다면 파일을 로드하는 명령은 무엇입니까? 감사해요.
예를 들어 파일 명령은 다음과 같습니다.
awk -f program.awk d01.active > out1
awk -f program.awk d02.active > out2
명령을 사용할 수 없는 awk 프로그램을 실행하는 데 문제가 있기 때문입니다.
awk -f program.awk d??.active > out
많은 수의 파일에 대해 program.awk를 사용해야 하는데 해당 명령으로 프로그램을 수정할 수 없을 때 이것이 나에게 더 간단한 해결책처럼 보입니다.
답변1
쉘 명령 목록(한 줄에 하나씩)이 포함된 파일이 있다면 쉘 스크립트가 있는 것입니다! 당신이 해야 할 일은 그것을 실행하는 것 뿐입니다:
sh file_commands
그러나 이것은 내가 필요하다고 생각하는 가장 쉬운 방법은 아닙니다. 현재 디렉토리의 모든 파일을 실행하려면 program.awk
간단히 루프를 사용하면 됩니다.d??.active
for file in d??.active; do awk -f program.awk "$file" > "$file".out; done
그러면 d01.active.out
출력 파일이 생성되고 에 대한 파일이 d01.active
생성 됩니다 .d02.active.out
d02.active
답변2
쉘 스크립트는 본질적으로 지정된(또는 기본) 인터프리터에 의해 명령 목록으로 해석되는 줄 구분 기호로 끝나는 명령 목록입니다.
통역사를 지정하려면 파일이 다음으로 끝나야 합니다.해시본(셰뱅이라고도 함).
예:
#!/bin/sh
#!/bin/bash
#!/bin/ksh
#!/bin/zsh
#!/usr/bin/env bash
참고: 각 인터프리터에는 고유한 구문과 규칙 세트가 있습니다. 어떤 제품을 사용하려고 하든 설명서를 잘 읽어야 합니다.
해시뱅 후에는 기본적으로 해당 줄에서 실행할 명령 나열을 시작할 수 있습니다.
참고: 이 명령은 위에서 아래로 순서대로 실행됩니다.
귀하의 예에서는 다음과 같은 것을 원할 것입니다.
#!/bin/sh
awk -f program.awk d01.active > out1
awk -f program.awk d02.active > out2
그런 다음 파일을 실행 가능하게 만들고 명령줄에서 파일에 대한 전체 경로 또는 상대 경로를 지정하여 실행해야 합니다. (또는 실행하여 sh /path/to/file
)
그러나 이는 잠재적인 xy 문제처럼 보이며 보다 프로그래밍적인 방식으로 처리될 수 있습니다.
예를 들어:
#!/bin/bash
for file in d??.active; do
n=${file:1:2}
awk -f program.awk "$file" > "out$n"
done