smartctl -a
해당 출력의 장치 일련 번호를 출력이 저장되는 파일 이름으로 실행하고 사용하고 싶습니다 . 나는 smartctl
이를 두 번 호출하고 적절한 텍스트 조작을 사용하여 출력을 분할함으로써 이를 수행할 수 있다는 것을 알고 있습니다. 단 한 번의 호출로 이를 수행할 수 있는 방법이 있습니까 smartctl
?
답변1
출력을 smartctl
변수에 저장하고 필요한 만큼 여러 번 사용하세요.
smartctl_output=$(smartctl -a /dev/sda)
serial_number=$(printf %s "$smartctl_output" | awk 'sub(/^Serial Number: */,"")')
printf %s "$smartctl_output" >"$serial_number.txt"
답변2
출력을 smartctl -a
임시 파일에 저장한 다음 이중 구문 분석할 수 있습니다. 이렇게 하면 스크립트를 빠르게 테스트할 수 있습니다(임시 파일을 한 번 생성하고 에 대한 호출을 주석 처리하고 smartctl
만족할 때까지 구문 분석기를 조정한 다음 행의 주석 처리를 제거합니다 smartctl
).
또는 pee
파이프를 사용하여 출력을 smartctl -a
두 프로그램 모두에 파이프할 수 있지만 한 프로세스에는 다른 프로세스에서 찾은 시퀀스 번호로 이름을 바꿀 수 있는 임시 파일이 여전히 필요합니다.