답변:
echo
Bash와 dash ( /bin/sh
)에 내장 된 쉘 입니다. echo
명령 행에서 실행 하는 경우 Bash 기본 제공을 사용하고 있고 쉘 스크립트를 실행중인 경우 sh
Dash 기본 제공을 사용하고 있습니다.
의 대시 버전은 echo
알고하지 않습니다 -e
에 대한 특별한 처리없이 선택이 아닌 바로 출력 아무것도 그대로 \
시퀀스를.
Bash를 사용하여 쉘 스크립트를 실행하거나 다음 /bin/echo
대신 사용하십시오 echo
.
/bin/echo -e "\e[1;31mThis is red text\e[0m"
다른 버전의 문제를 피하기 위해 대신 echo
사용할 수 있습니다 printf
. 반대로 echo
printf
항상 \
시퀀스를 해석 하지만 끝에 줄 바꿈을 자동으로 추가하지 않으므로 \n
원하는 경우 끝에 줄을 추가해야합니다 .
일부 버전은 printf
이해하지 못 \e
하므로 \033
대신 사용해야 합니다.
printf "\033[1;31mThis is red text\033[0m\n"
로 실행하지 마십시오. sh test.sh
말한 것처럼 텍스트를 흰색으로 인쇄합니다. 스크립트를 만든 후 실행하여 실행 가능하게합니다.
sudo chmod +x /path/test.sh
sudo
, sudo ./test.sh
또는 ./test.sh
둘 다 작동 하여 스크립트를 실행하십시오 .
또는
으로 스크립트를 실행 bash
,
bash /path/test.sh
chmod a+x test.sh
하면 텍스트를 읽기 색상으로 인쇄합니다. 차이점은 무엇입니까? 리눅스에서 일어난 일과 ./test.sh
같아야 sh test.sh
합니까?
#! /bin/bash
를 사용 하여 스크립트를 만들었습니다.bash test.sh
.
현재 디렉토리를 의미합니다.
./test.sh
있습니다. 그래서 해당 바탕 화면 폴더로 이동 한 다음 실행합니다 . 마지막으로 작동합니다 .
. 현재 디렉토리 안에있는 경우에만 스크립트를 실행하십시오 .
/bin/echo
dash (/bin/sh
)와 bash로;echo
bash 또는./tes.sh
둘 다 올바르게 작동합니다. 아래 코드는 작동bash
합니다. [$ UID -ne 0]이면; 그런 다음 "루트 사용자 아님"echo echo "Root User"fi