나는 문자열에 대한 파일을 검색하고 싶었고 사이트를 여러 번 검색한 후에 결국 grep
in 및 if
문을 사용하게 되었습니다. 하지만, 다른 관련 게시물에서 찾은 지침을 모두 따랐음에도 불구하고, 예상한 대로 일이 진행되지 않았습니다. 여기 내 코드가 있습니다.
echo "Enter dicounter number"
read string1
echo "Enter side with LEDs"
read string2
if grep -q "dicounter_$string1_from_$string2" MasterFile.txt; then
echo "dicounter_$string1_from$string2 already exists in MasterFile."
else
{ (a bunch of stuff to make the transmitter operate) }
fi
주요 문제는 명령줄 인수를 읽는 방식이라고 생각합니다.
답변1
스크립트가 예상대로 작동하지 않는 경우 가장 먼저 시도해 볼 수 있는 작업은 set -x
코드의 문제 지점 이전(이 경우 이전)에 추가한 grep
다음 스크립트를 실행하는 것입니다. 그러면 스크립트가 무엇인지 알 수 있습니다.실제로그렇게 하여 당신이 한 일과 비교할 수 있도록 하세요예상되는그것을하고 있습니다.
귀하의 경우 문제는 변수 이름의 유효한 문자일 수 있으므로 예상한 값 대신 _
값을 사용하려고 합니다 . 그렇기 때문에 화려한 연산을 사용하지 않더라도 변수 이름을 중괄호로 묶는 것이 좋습니다. 예를 들어:$string1_from_
$string1
if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
[..]