이러한 매개변수 확장을 큰따옴표로 묶어야 합니까?

이러한 매개변수 확장을 큰따옴표로 묶어야 합니까?

shellcheck는 다음과 같은 경고를 표시합니다.

In myscript line 38:
        echo -e "blah/blah\n$(cat ${tmpdir}/${filename}.jpdf)" > "$tmpdir"/"$filename".jpdf
                                            ^-- SC2086: Double quote to prevent globbing and word splitting.

이 명령의 목적은 파일 시작 부분에 줄을 삽입하는 것입니다 ${tmpdir}/${filename}.jpdf.

shellcheck의 경고가 의미가 있습니까? 왜?

전체 매개변수를 큰따옴표로 묶었습니다 . 더 echo -e큰따옴표로 묶어야 합니까 ?${tmpdir}${filename}

감사해요.

답변1

예, 다음과 같은 분할 및 와일드카드를 피하려면 다음을 수행하세요.

echo -e "blah/blah\n$(cat "${tmpdir}/${filename}.jpdf")" > "$tmpdir/$filename.jpdf"

내부 큰따옴표만 있으면 됩니다. 내 말은, $(…)내부와 외부에 큰따옴표가 있다는 것입니다."$(…)"

관련 정보