우분투 실행 .sh 파일

1. .sh 파일 실행

(1)使用sh testsh执行
(2)使用bash testsh 执行
(3)使用点 执行
(4)使用source执行

./sh 文件开头***的含义:
#!/bin/sh             以下的代码由/bin/sh 来解释
#!/bin/bash           以bash shell来解释
#!/bin/csh            以csh shell来解释
#!/usr/bin/env python  以下代码由python来解释 
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪
一种 Shell

 

(1) sh test.sh를 사용하여 실행

sh test.sh를 사용하여 스크립트 파일을 실행합니다. 이 방법은 sh 셸이 test.sh 파일을 실행하는 데 사용됨을 나타냅니다. sh는 이미 bash로 대체된 셸입니다.

test.sh에서 #!/bin/bash를 사용하여 파일을 실행하도록 선언했지만, 이때 bash 대신 sh를 사용하면 #!/bin/bash는 아무런 효과가 없습니다.

(2) bash test.sh를 사용하여 실행

이 방법은 쉘 /bin/bash가 스크립트 파일을 실행하는 데 사용된다는 점을 제외하면 실제로 sh test.sh와 동일합니다.

따라서 실제로 dash test.sh'를 사용하는 것도 가능합니다. 스크립트를 실행하는 데 사용하려는 셸에 따라 다릅니다.

단, sh, bash, dash는 약간 다른데, let과 같은 일부 키워드는 bash가 지원하고 sh, dash는 지원하지 않으며, 일부 키워드는 bash를 사용하도록 선택한다.

(3) 포인트 사용.실행

이 방법을 사용하기 전에 파일에 실행 권한을 추가해야 합니다.

  chmod +x test.sh

실행 권한을 추가한 후 ./test.sh를 사용하여 bash test.sh와 동일한 스크립트를 실행할 수 있습니다. 기본적으로 bin/bash는 스크립트를 실행하는 데 사용됩니다.

이 실행 메서드만 파일에 실행 권한을 추가하면 되고 다른 메서드는 필요하지 않습니다.

(4) 소스를 이용하여 실행

소스를 사용하면 스크립트를 직접 실행할 수도 있습니다.

  소스 test.sh

차이점

sh test.sh, bash test.sh, ./test.sh를 사용하여 스크립트를 실행하면 test.sh 실행 스크립트는 새로운 셸 환경을 사용하여 스크립트의 명령을 실행합니다.

즉, 이 세 가지 방법을 사용할 때 스크립트는 실제로 자식 프로세스의 셸에서 실행되며, 자식 프로세스가 완료되면 자식 프로세스의 변수와 작업이 종료되고 부모 프로세스로 다시 전달되지 않습니다. 프로세스.

너 이해할 수 있니? 다음 예를 참조하십시오.

  1. [root@ubuntu]# bash test.sh
  2. 이름을 입력하세요: yao <==输入이름
  3. 성을 입력하세요: pentonBin <==输入lastname
  4. 귀하의 전체 이름은: yao pentonBin입니다.
  5. [root@ubuntu] # 에코 $firstname
  6. <==출력 없음

소스 메서드를 사용하여 스크립트를 실행하면 어떻게 될까요?

  1. [root@ubuntu] # 소스 test.sh
  2. 이름을 입력하세요: yao <==输入이름
  3. 성을 입력하세요: pentonBin <==输入lastname
  4. 귀하의 전체 이름은: yao pentonBin입니다.
  5. [root@ubuntu] # 에코 $firstname
  6. yao <== 여기서 이름 출력

즉, 소스 메서드의 실행 스크립트는 부모 프로세스에서 실행되고 test.sh의 모든 작업은 원본 셸에서 적용됩니다.

그렇기 때문에 ~/.bashrc에 작성된 특정 설정을 시스템에서 로그아웃하지 않고 적용하려면 bash ~/.bashrc 대신 source ~/.bashrc를 사용해야 합니다.

2. .sh 파일 작성

(1) 변수 정의 : 변수 이름에 달러 기호를 추가하지 않습니다.
좋다:

Num=1
Var2="hello world!"

 참고: 변수 이름과 등호 사이에는 공백이 없어야 합니다.

(2) 변수 사용 : 정의된 변수를 사용하려면 변수 이름 앞에 달러 기호를 추가하면 됩니다
.

#!/bin/sh
a="hello world!"
num=2
echo "a is : $a num is : ${num}nd"

실행 결과:
a is : hello world! num is : 2nd
설명: 변수 이름 외부의 중괄호는 선택 사항이며 추가하거나 추가하지 않을 수 있습니다 중괄호는 인터프리터가 변수의 경계를 식별하는 데 도움이 되도록 추가됩니다 일반적으로 추가합니다 중괄호 .

(3) 매개변수 전달
쉘 스크립트를 실행할 때 스크립트에 매개변수를 전달할 수 있으며 스크립트에서 매개변수를 가져오는 형식은 $n입니다.
n은 숫자를 나타내며, 1은 스크립트를 실행하는 첫 번째 매개변수, 2는 스크립트를 실행하는 두 번째 매개변수 등...
$0은 스크립트 경로와 스크립트 이름을 가져오며 순서대로 획득한다는 점에 유의할 필요가 있습니다. 매개변수,
매개변수가 10개 이상일 경우(10개 포함) ${10}, ${11}....를 사용하여 매개변수를 구해야 하지만
일반적으로 매개변수가 10개를 넘는 경우는 거의 없습니다.

스크립트 파일 test.sh 생성

#!/bin/bash
echo "脚本$0"
echo "第一个参数$1"
echo "第二个参数$2"

 다음을 호출할 때 호출할 수 있습니다: sh test.sh 2 3, 출력은 다음과 같습니다:
script test.sh
첫 번째 매개변수 2
두 번째 매개변수 3

(4) echo 명령 : echo는 문자열을 출력하는 데 사용되며 종종 시스템 변수 경로를 관찰하는 데 사용됩니다. .
일반 문자열 표시: echo "learn linux" 시스템 라이브러리 경로 표시: echo $PATH PATH는 기본 라이브러리의 검색 경로를
저장하는 Windows의 환경 변수와 동일한 시스템 변수입니다. (5) 쉘 스크립트 파일 탐색 디렉토리 문제 : 폴더 /tmp 트래버스



#!/bin/bash
for i in /tmp/*
do
  echo "Hello, $i"
done

 

 

추천

출처blog.csdn.net/baidu_38493460/article/details/130379413