docker 컨테이너 bash 스크립트의 여러 명령

docker 컨테이너 bash 스크립트의 여러 명령

컨테이너 내부에서 일부 명령을 실행하고 싶지만 두 번째 명령은 컨테이너 내부에서 실행되기를 원하지 않으므로 grep파일이 컨테이너의 홈 디렉터리에서 찾을 수 없습니다. 누구든지 같은 문제가 있습니까?

# Throughput
    docker exec -i container_client bash << EOF >> mystatistics.xls
    (sockperf throughput --tcp --msg-size=256 -i $ipaddcontainer -p 12345 -t 10)> my_output_file_troughput.txt
    echo "Bridge mode" "," `grep 'BandWidth is ' my_output_file_troughput.txt | cut -d ' ' -f 5`
    exit
    EOF

답변1

here-docs를 사용할 때 마크업을 인용할 때와 인용하지 않을 때의 차이점을 기억해야 합니다 EOF. qoutes가 없으면 모든 명령 대체는 Docker가 아닌 기본 셸에서 수행됩니다. 다음 두 가지를 비교하십시오.

$ cat <<EOF
$(echo ok)
EOF

ok

그리고:

$ cat <<"EOF"
$(echo ok)
EOF

$(echo ok)

따라서 명령(명령 대체 포함)을 Docker에 전달하려면 이 토큰을 참조해야 합니다.

그런데,

  1. 그런데 왜 subshell을 사용하고 싶나요 sockperf?
  2. 진드기는 더 이상 사용되지 않으며 새 구문은 입니다 $().

관련 정보