[bash] 다른 쉘 스크립트에서 하나의 쉘 스크립트를 호출하는 방법은 무엇입니까?

나는 두 개의 쉘 스크립트를 가지고 a.shb.sh.

b.sh쉘 스크립트 내에서 어떻게 호출 할 수 a.sh있습니까?



답변

이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.

  1. 다른 스크립트를 실행 가능하게 만들고 #!/bin/bash맨 위에 줄을 추가 하고 파일이 $ PATH 환경 변수에 대한 경로를 추가하십시오 . 그런 다음 일반 명령으로 호출 할 수 있습니다.

  2. 또는 다음과 같이 source명령 (별칭은 .)으로 호출하십시오 . source /path/to/script;

  3. 또는 bash명령을 사용하여 실행하십시오. /bin/bash /path/to/script;

첫 번째 및 세 번째 방법은 스크립트를 다른 프로세스로 실행하므로 다른 스크립트의 변수 및 함수에 액세스 할 수 없습니다.
두 번째 방법은 첫 번째 스크립트 프로세스에서 스크립트를 실행하고 다른 스크립트에서 변수 및 함수를 가져 와서 호출 스크립트에서 사용할 수 있도록합니다.

두 번째 방법에서는 exit두 번째 스크립트를 사용 하는 경우 첫 번째 스크립트도 종료됩니다. 첫 번째와 세 번째 방법에서는 발생하지 않습니다.


답변

이것 좀 봐.

#!/bin/bash
echo "This script is about to run another script."
sh ./script.sh
echo "This script has just run another script."


답변

이를 수행 할 수있는 몇 가지 방법이 있습니다. 스크립트를 실행할 터미널 :

#!/bin/bash
SCRIPT_PATH="/path/to/script.sh"

# Here you execute your script
"$SCRIPT_PATH"

# or
. "$SCRIPT_PATH"

# or
source "$SCRIPT_PATH"

# or
bash "$SCRIPT_PATH"

# or
eval '"$SCRIPT_PATH"'

# or
OUTPUT=$("$SCRIPT_PATH")
echo $OUTPUT

# or
OUTPUT=`"$SCRIPT_PATH"`
echo $OUTPUT

# or
("$SCRIPT_PATH")

# or
(exec "$SCRIPT_PATH")

이 모든 것은 공백이있는 경로에 맞습니다 !!!


답변

내가 찾은 대답 :

( exec "path/to/script" )

언급 한대로 exec새 프로세스를 작성하지 않고 쉘을 대체합니다. 그러나 , 우리는 그것을 서브 쉘에 넣을 수 있으며, 이것은 패 리언을 사용하여 수행됩니다.

편집 : 실제로 ( "path/to/script" )충분합니다.


답변

에 따라 다릅니다. 간단히 … 현재 콘솔에서 변수를로드하고 실행하려면 source myshellfile.sh코드에서 사용할 수 있습니다. 예:

!#/bin/bash
set -x
echo "This is an example of run another INTO this session."
source my_lib_of_variables_and_functions.sh
echo "The function internal_function() is defined into my lib."
returned_value=internal_function()
echo $this_is_an_internal_variable

set +x

파일을 실행하고 싶지만 결과를 얻는 유일한 결과는 다음과 같습니다.

!#/bin/bash
set -x
./executing_only.sh
sh i_can_execute_this_way_too.sh
bash or_this_way.sh
set +x

희망이 있습니다. 감사.


답변

/bin/sh실제 스크립트를 통해 다른 스크립트를 호출하거나 실행 하는 데 사용할 수 있습니다 .

 # cat showdate.sh
 #!/bin/bash
 echo "Date is: `date`"

 # cat mainscript.sh
 #!/bin/bash
 echo "You are login as: `whoami`"
 echo "`/bin/sh ./showdate.sh`" # exact path for the script file

결과는 다음과 같습니다.

 # ./mainscript.sh
 You are login as: root
 Date is: Thu Oct 17 02:56:36 EDT 2013


답변

터미널에 입력 한 내용을 줄에 추가하여 스크립트를 실행하십시오!
예 :

#!bin/bash
./myscript.sh &

실행할 스크립트가 동일한 디렉토리에 있지 않은 경우 스크립트의 전체 경로를 사용하십시오.
예 :`/ home / user / script-directory /./ myscript.sh &