나는 두 개의 쉘 스크립트를 가지고 a.sh
와 b.sh
.
b.sh
쉘 스크립트 내에서 어떻게 호출 할 수 a.sh
있습니까?
답변
이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.
-
다른 스크립트를 실행 가능하게 만들고
#!/bin/bash
맨 위에 줄을 추가 하고 파일이 $ PATH 환경 변수에 대한 경로를 추가하십시오 . 그런 다음 일반 명령으로 호출 할 수 있습니다. -
또는 다음과 같이
source
명령 (별칭은.
)으로 호출하십시오 .source /path/to/script
; -
또는
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 &