특정 기준과 일치하는 파일 목록을 파일로 가져오는 작은 스크립트를 작성하려고 합니다.
#!/bin/sh
cd /var/www_data/patch/
grep --include=\*.{php,ini,conf,sh} -ril -P "'([\d\w\-\_\.]+)(@domain.com)'" "/var/www_data/something/" 2>&1 > mails
이 grep
줄은 명령줄에서 잘 작동하지만 스크립트를 통해 실행하면 결과 파일 크기가 0바이트가 됩니다. 왜 이런 일이 발생하는지 아시나요?
답변1
내 실수를 발견했습니다. 그랬어야 했어 #!/bin/bash
. 팁을 주신 @steeldriver에게 감사드립니다.
답변2
스크립트에서 셸 확장을 활성화하려면 bash에 명령줄 옵션을 전달해야 하며, 이는 스크립트 자체에서 수행할 수 있습니다.
#! /bin/bash
set -B #enables expansion
set -X #enables debugging
첫 번째 옵션을 사용하면 명령줄에 작성된 것처럼 모든 것이 셸에 전달되고, 두 번째 옵션은 많은 출력을 생성하므로 무슨 일이 일어나고 있는지 확인하는 데 유용하지만 일단 스크립트가 제대로 작동하면 확실히 비활성화하고 싶습니다.