Bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

Bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

일부 데이터를 포트 30000에 지속적으로 브로드캐스트하는 스크립트를 작성 중이므로 Python UDP 수신기가 데이터를 가져와 테이블에 삽입할 수 있습니다. 테이블에서 해당 정보를 그려 웹 페이지에 표시할 수 있습니다.

그래서 나는 처형하고 싶다.

echo -n -e "\x00\x00\x0A\x00 1 012601234512345\x00" | nc -w1 -u localhost 3000

while 루프의 bash 스크립트에서.

이것은 지금까지 내가 가지고 있는 bash 스크립트입니다.

#!/bin/bash
echo 'Running Script'   
a=0  
x=1
while [ $a -le 1 ]
do
  echo 'echo -n -e "\x00\x00\x0A\x00        1      012601234'$x'12345\x00" | nc -w1 -u localhost 30000'
  sleep 5 
  let x=$(($x + 1))
done

x 변수는 루프 전체에서 매번 증가하므로 데이터가 매번 변경됩니다.

지금은 그걸 터미널에 명령어로 출력하는 게 아니라 그냥 문자열로 나오는 게 아닌가 하는 생각이 듭니다. 나는 bash를 처음 접했고 도움을 주시면 대단히 감사하겠습니다.

답변1

당신은 그것을 지나치게 생각하고 있습니다.

실행하려는 명령을 인용하거나 echo넣지 않고 거기에 넣기만 하면 됩니다. 변수를 ${x}. 변수는 큰따옴표로 묶인 문자열로 대체되며 변수가 및 아닌 {}것으로 해석되도록 하기 위해 존재합니다 .xx12345

#!/bin/bash
echo 'Running Script'   
a=0  
x=1
while [ $a -le 1 ]
do
  echo -n -e "\x00\x00\x0A\x00        1      012601234${x}12345\x00" | nc -w1 -u localhost 30000
  sleep 5 
  let x=$(($x + 1))
done

답변2

실제로 명령을 실행하는 대신 명령을 에코하고 있습니다.

Bash 스크립트는 명령으로 한 줄씩 실행됩니다. 따라서 다음 줄은 다음과 같습니다.

echo 'Running Script'

echo 'Running Script'쉘에 입력하는 것과 정확히 동일합니다 . 직접 시도해 보세요. 출력됩니다 Running Script. 결론: echo모든 인수를 터미널에 출력합니다.

위 명령이 실행된 bash의 스크린샷

즉, 이 줄은 다음과 같습니다.

echo 'echo -n -e "\x00\x00\x0A\x00        1      012601234'$x'12345\x00" | nc -w1 -u localhost 30000'

echo -n -e "\x00\x00\x0A\x00 1 012601234'$x'12345\x00" | nc -w1 -u localhost 30000터미널에 출력됩니다 . 전체 라인이 실행되고 인수가 출력됩니다.

Bash에서 두 번째 명령이 실행되었습니다.

여전히 혼란스러워보이므로 조금 단순화해 보겠습니다. 명령을 echo 'echo -n -e "blah"'.

blah 명령이 bash에서 실행되었습니다.

명령을 출력하라고 지시했으므로 명령을 출력했습니다. echo대신 실행하려면 외부를 삭제하세요 . 처럼Slhck가 제안한, 중괄호로 묶어 변수를 사용할 수 있습니다.

echo -n -e "\x00\x00\x0A\x00        1      012601234${x}12345\x00" | nc -w1 -u localhost 30000

명령을 실행하지만 출력하지는 않습니다. 명령을 출력하려면 다음을 시도하십시오.

cmd="echo -n -e \"\x00\x00\x0A\x00        1      012601234${x}12345\x00\" | nc -w1 -u localhost 30000"
echo $cmd
$cmd

첫 번째 줄은 명령을 cmd변수에 할당하고, 두 번째 줄은 이를 출력하고, 세 번째 줄은 실행합니다. 처음에는 혼란스러워 보이지만 매우 간단합니다. bash는 명령을 실행하기 전에 변수를 대체하므로 변수 이름을 입력하면 해당 내용이 실행됩니다.

관련 정보