bash 코드 블록을 서브셸에 넣기

bash 코드 블록을 서브셸에 넣기

이것이 효과가 있기를 바랍니다.

echo "starting";
{
 cd "$HOME/foobar"
 echo "rolo" > file.txt
}
echo "ending";

서브쉘 코드가 중괄호 사이에 표시되지만 구문이 올바르지 않은 것 같습니다. 어떻게 해야 합니까?

답변1

~에 따르면배쉬 문서그룹화를 위해 괄호나 중괄호를 사용할 수 있지만 괄호를 사용하면 하위 쉘이 생성됩니다. 따라서 서브쉘에서 명령을 실행하려면 다음을 사용하십시오.

echo "starting"
(
    cd "$HOME/foobar"
    echo "rolo" > file.txt
)
echo "ending"

하지만 이 예에서는 다음을 수행할 수 있습니다.

echo "rolo" > "$HOME/foobar/file.txt"

관련 정보