Linux에 해당하는 "echo on"이 있습니까?

Linux에 해당하는 "echo on"이 있습니까?

Bash 스크립트에서 실행되는 모든 명령을 stdout으로 가져오려면 어떻게 해야 합니까?

즉, 출력에는 명령 출력과 명령 자체가 포함되어야 합니다.

나는 찾았다

#!/bin/bash -x

하지만 이것은 정확히 같지는 않습니다. 왜냐하면 대신에

 mysql -v dbname < dump.sql | grep "CREATE TABLE"

이것은 보여준다

+ mysql -v dbname
+ grep 'CREATE TABLE'

답변1

사용 bash -v.

스크립트는 다음과 같습니다.

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'

echo "Done."

출력은 다음과 같습니다.

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
Done.

불행하게도 확장된 명령을 인쇄하는 것과 같은 특별한 마커는 없습니다 PS4. 명령을 빠르게 식별하기 위해 두 가지를 결합할 수 있습니다.

#!/bin/bash -vx

echo "Hello, World" | sed 's|Hello|Goodbye|'
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
+ echo Done.
Done.

답변2

set -x는 다른 방법입니다.

$ cat a.sh
#!/bin/bash

set -x
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."

출력은 다음과 같습니다:

sh a.sh
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
+ echo Done.
Done.

답변3

set -x"에코 켜기"와 동일합니다.

set +x"에코 꺼짐"과 동일합니다.

관련 정보