Bash 스크립트 eval, quoting과 command substitution 에 대해서...
bash 스크립트를 짜다가 갑자기 eval, quoting과 command substitution에 대해 좀 명확히 해서 블로그에 올리고 싶어서 실험을 좀 하였다. 위는 weak quoting ("") 과 eval의 기본적인 특성을 보여주는 예시이다. 근데 eval을 통해 $c의 값을 온전히 출력하려면 어떻게 해야할까? eval "echo \"hello\\\";echo \\\"fool\"" 이 실행되도록 하면 된다. 그러면 결국 echo "hello\";echo \"fool"이 실행되어 hello";echo "fool 이 출력될 것이다. (물론 eval "echo \$c" 가 제일 쉬운 방법) 위는 strong quoting ('') 과 2가지 command substitution ($() 와 ``) 의 특성을 보여주는 예이다. ` `을 사용할 때 특히 주의해야할 점은 ` ` 안에 있는 ' ' 에 까지 ` `의 escaping이 적용된다는 점이다. 그리고 ` ` 의 escaping은 string quoting의 escaping 과는 다르다는 것이다. 예를들어 \"은 적용이 안된다. (오타정정 : but \s --> but \") $() 은 그안에 escaping이 never!! 절대로 적용되지 않는다.. 심지어 "$(~~"~~"~$(...)~)" 의 문법도 가능하다. 또 주의해야할 점이 "`~~`" 의 경우이다. 이 경우에는 ~~ 부분에 대해 ` `의 escaping 규칙과 " "의 escaping 규칙이 같이 적용된다. (100% 정확하진 않고... 개인적인 경험/실험에 의한 의견이다) 하지만 \\ 등에 대해서 중...