변수에 저장된 명령을 실행하여 파일에 에코

변수에 저장된 명령을 실행하여 파일에 에코

다음 시나리오에 저장된 명령을 적용하는 방법:

CMD='echo "test" >> test.txt'
$CMD

다음과 같은 다른 시나리오에 적합합니다.

CMD='mkdir test'
$CMD

답변1

올바른 규칙은 다음과 같아야 합니다.

  • 변수에 데이터를 저장하고 함수에 코드를 저장합니다.

따라서 이 명령을 작동시키는 올바른 방법은 다음과 같습니다. 함수를 생성합니다.

first_command (){ echo "test" >> test.txt; }

다음 함수를 호출하세요.

first_command

그게 다야.


명령을 문자열로 저장하는 것은 잘못되었습니다.
균일하다더 나쁜이러한 명령을 실행하려면 eval을 사용하십시오.

간단한 명령에는 작동하는 것처럼 보이지만 숨겨진 문제는 평가 단계에서 명령에 대한 참조가 제거된다는 것입니다.

이 명령을 저장하면

CMD='echo "test" >> test.txt'

(예 eval "$CMD", 심지어 따옴표까지)는 다음 명령을 실행합니다:

echo test >> test.txt

따옴표가 없습니다!

이것은매우인용문에는 eval을 사용하여 특별한 관리가 필요하다는 사실을 잊기 쉽습니다. 견적을 받는 것은 무슨 일이 있어도 항상 까다롭습니다.

평가 단계(평가 요구의 주요 문제) 없이 리디렉션 없이 변수에 저장된 명령을 실행하려고 시도하는 것은 여전히 ​​까다로우며 모든 경우에 작동하지 않습니다.

여기에서 문제에 대한 훌륭한 소개를 읽어보세요.
명령을 변수에 넣으려고 했지만 복잡한 경우는 항상 실패합니다!

관련 정보