here 문자열을 사용하는 것보다 bash -c를 사용하면 어떤 이점이 있습니까?

here 문자열을 사용하는 것보다 bash -c를 사용하면 어떤 이점이 있습니까?

bash -c 'some command'사용보다 사용하면 실제 이점이 있습니까?bash <<< 'some command'

그들은 동일한 효과를 얻는 것 같습니다.

답변1

bash -c 'some command'호출자의 표준 입력에 대한 액세스를 유지하므로read또는 표준 입력에서 읽는 명령이 올바르게 작동합니다. bash <<< 'some command'해당 입력을 전달된 라인으로 대체하므로 bash -c catbash <<< cat다른 작업을 수행합니다.

$ bash -c cat
abc
abc
^D
$ bash <<< cat
$

반면에 이 기능을 활용하여 다음을 통해 자신만의 표준 입력을 제공할 수 있습니다.$'...', 매우 조심한다면:

$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$

나는 그것에 의존하고 싶지 않지만 때로는 유용할 수 있습니다.


bash -c또한 매개변수를 스크립트에 전달하고 $0다음을 설정할 수 있습니다.

bash -c 'some command' sh abc def

및 내부 $1로 설정 됩니다 .abc$2defsome command

관련 정보