목차
3.【 $#】:参数个数" >3.【 $#】:参数个数
5. 【$@】:所有参数" >5. 【$@】:所有参数
6. 【$?】:上一个命令的退出状态码" >6. 【$?】:上一个命令的退出状态码
7. 【$$】:当前进程ID号" >7. 【$$】:当前进程ID号
8. 【$!】:最近一次在后台运行的进程的PID号" >8. 【$!】:最近一次在后台运行的进程的PID号
9. 【$-】:获取当前Shell的选项标志" >9. 【$-】:获取当前Shell的选项标志
10. 【$IFS】:指定Shell脚本中的字段分隔符" >10. 【$IFS】:指定Shell脚本中的字段分隔符
컴퓨터 튜토리얼 컴퓨터 지식 Linux 쉘 스크립트에서 특수 문자의 의미는 무엇입니까?

Linux 쉘 스크립트에서 특수 문자의 의미는 무엇입니까?

Mar 05, 2024 pm 02:58 PM
각본 매개변수 shell 쉘 스크립트

Linux Shell 스크립트에는 다양한 의미와 반환 값을 나타내는 일부 특수 매개변수가 미리 정의되어 있습니다. 아래에 하나씩 요약되어 있습니다.

1. [$0]: 스크립트 이름

$0返回当前执行的shell脚本的名称。

2.【1-9】:命令行参数1到9

$1-$9这9个分别代表脚本执行命令第一个参数、第二个参数、第三个参数……第9个参数。

例如,假设我们有一个名为 test.sh 的Shell脚本,它的内容如下:

#!/bin/bash

echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"
로그인 후 복사

在运行脚本时,我们可以给它传递两个参数,比如:

./test.sh hello world
로그인 후 복사

这时候脚本会输出:

Script name: test.sh
First argument: hello
Second argument: world
로그인 후 복사

说明 代表脚本名,1 代表第一个参数,$2代表第二个参数。

3.【 $#】:参数个数

它表示所有参数的个数。

#!/bin/bash

echo "Number of arguments: $#"
로그인 후 복사

运行脚本 ./test.sh hello world,输出 Number of arguments: 2

4. 【$*】:所有参数

$*表示所有参数。

#!/bin/bash

echo "All arguments: $*"
로그인 후 복사

运行脚本 ./test.sh hello world,输出 All arguments: hello world

5. 【$@】:所有参数

$@也表示所有参数:

#!/bin/bash

echo "All arguments: $@"
로그인 후 복사

运行脚本 ./test.sh hello world,输出 All arguments: hello world

上面$*和$@都是用来获取所有脚本参数的特殊变量。它们之间的区别在于,如何将参数作为单个字符串或多个独立字符串进行处理。

  • $*会把所有的参数解释成一个单词(单个字符串),即每个参数之间不会加上空格,全部组合成一个字符串,用IFS(默认是空格)分隔。所以,将*放在双引号里,预处理$符号,保持长字符串的完整性:
#!/bin/bash

echo "Using $*:"
for arg in "$*"; do
echo $arg
done
로그인 후 복사
  • $@会把所有的参数看成是独立的单词(多个独立的字符串),即每个参数之间加上空格,将每个参数作为一个独立的字符串处理。
#!/bin/bash

echo "Using $@:"
for arg in "$@"; do
echo $arg
done
로그인 후 복사

下面我们可以通过一个示例来理解两者的区别。假设我们有一个shell脚本,名为 test.sh 并拥有以下内容:

#!/bin/bash

echo "Using $*:"
for arg in "$*"; do
echo $arg
done

echo "Using $@:"
for arg in "$@"; do
echo $arg
done
로그인 후 복사

然后,在终端上执行以下命令:

$ ./test.sh one two three
로그인 후 복사

当我们执行脚本时,输出如下所示:

Using $*:
one two three
Using $@:
one
two
three
로그인 후 복사

我们可以看到,使用时,所有参数都解释为单个字符串,由空格分隔。

而使用@时,每个参数都被解释为一个单独的字符串,并独立处理。

在大多数情况下,使用$@是更加灵活和安全的选项,因为它可以独立处理每个参数,而不会将它们合并为单个字符串。

6. 【$?】:上一个命令的退出状态码

#!/bin/bash

ls /
echo "Exit status code: $?"
로그인 후 복사

由于ls /应该会执行成功,因此运行脚本后输出 Exit status code: 0,表示上一个命令执行成功。

7. 【$$】:当前进程ID号

$$ 是一个特殊的变量,用于获取当前正在运行的Shell脚本的进程ID(PID)

这个变量对于在Shell脚本中跟踪和识别进程非常有用,或者将PID用于生成唯一的临时文件名。

以下是一个简单的示例脚本,它使用$$变量来创建一个唯一的临时文件名:

#!/bin/bash

tempfile=/tmp/myprog.$$

echo "Program is running with PID $$."
echo "Temp filename is $tempfile."

#rest of the script goes here...
로그인 후 복사

在上述示例中,我们使用了$$变量来创建一个唯一的文件名,将其存储在$tempfile变量中,并在控制台输出当前脚本运行的进程ID。这个唯一的文件名将被用于存储程序输出或其他的过程。

使用$$变量时,需要注意它只能获取当前Shell脚本的PID而不能获取任何子进程或后台任务的PID

8. 【$!】:最近一次在后台运行的进程的PID号

在Linux Shell脚本中,!是一个特殊变量,用于获取最近一次在后台运行的进程的PID号(进程ID号)。

通常用于在脚本中启动后台进程,并且需要获取后台进程的PID号。

以下是一个示例脚本 test.sh,它使用&运算符来将程序启动到后台运行,并使用$!变量获取需要的PID号:

#!/bin/bash

echo "Starting background process..."
sleep 5 &
background_pid=$!
echo "The background process PID is: $background_pid"
로그인 후 복사

上述脚本中的sleep命令会在后台执行5秒钟,并执行$!将其PID号赋值给变量background_pid

最后,脚本会输出后台进程的PID号。

执行该脚本的命令是:./test.sh,其输出如下:

Starting background process...
The background process PID is: 12345
로그인 후 복사

其中,12345应该是实际执行中sleep进程的PID号,其值随机。

9. 【$-】:获取当前Shell的选项标志

$- 是一个特殊变量,用于获取当前Shell的选项标志(Option Flags)。选项标志是Shell用来控制其行为的一些特殊设置。

$- 可以用来获取当前Shell所使用的选项标志,通常应用于Shell脚本的调试中,可以帮助我们诊断问题。

以下是一个示例脚本 test.sh,它使用$-变量获取当前Shell的选项标志及其含义:

#!/bin/bash

echo "Value of $-: $-"
로그인 후 복사

上述脚本中,echo命令会输出当前Shell的选项标志。

执行该脚本的命令是:./test.sh,其输出如下:

Value of $-: himBH
로그인 후 복사

上述输出中,选项标志中包含了5个字符,分别表示以下内容:

  • hbash shell启用hash命令时将完成命令名和缓存条目之间的HASH值打印到标准错误输出中;
  • i:交互模式运行,即标准输入与终端相连;
  • m:启用作业控制功能;
  • B:启用Brace Expansion(花括号扩展)机制;
  • HShell扩展历史记录功能,寻找法:$HOME/.bash_history,如果该文件不存在则新建一个。

10. 【$IFS】:指定Shell脚本中的字段分隔符

$IFS是一个特殊变量,用于指定Shell脚本中的字段分隔符。字段分隔符是将一行输入或输出按照不同的字段拆分开来并存储在不同的变量中的标记。

默认情况下,$IFS的值为空格,制表符和换行符。但是,我们可以将其设置为其他的分隔符来满足特定的需求。

以下是一个示例脚本 test.sh,它使用$IFS变量来指定不同的分隔符,将一行输入按照分隔符分成不同的变量:

#!/bin/bash

echo "Enter a line of values separated by commas (','):"
read line

echo "Default IFS values: '$IFS'"
IFS=","
echo "Custom IFS value set to: '$IFS'"

echo "Values entered:"
for value in $line
do
echo "$value"
done
로그인 후 복사

上述脚本中,通过read命令读取一行输入,并通过将$IFS设置为逗号来将输入行分隔成不同的变量。最后,使用for循环按顺序输出不同的变量。

执行该脚本的命令是:./test.sh,它会提示用户输入一个以逗号分隔的值列表。然后,它将逗号设置为分隔符并按顺序输出每个值。下面是一些示例输入和输出:

输入:

a,b,c,d,e
로그인 후 복사

输出:

Default IFS values: 'n'
Custom IFS value set to: ','
Values entered:
a
b
c
d
e
로그인 후 복사

在上述输出中,$IFS的初始值为默认值(空格、制表符、换行符),该输入字符串以逗号分隔,然后按逗号分隔的方式打印每个值。

这是一个非常有用的用法,可以将一行以逗号或其他字符分隔的值按分隔符分成不同的变量,进一步处理这些变量值。

关于shell中这10个特殊变量,总结如下:

Linux shell脚本中特殊字符含义有哪些

위 내용은 Linux 쉘 스크립트에서 특수 문자의 의미는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

편집용 스크립트를 만드는 방법은 무엇입니까? 편집을 통해 스크립트를 생성하는 방법에 대한 튜토리얼 편집용 스크립트를 만드는 방법은 무엇입니까? 편집을 통해 스크립트를 생성하는 방법에 대한 튜토리얼 Mar 13, 2024 pm 12:46 PM

Cutting은 포괄적인 편집 기능, 가변 속도 지원, 다양한 필터 및 뷰티 효과, 풍부한 음악 라이브러리 리소스를 갖춘 비디오 편집 도구입니다. 이 소프트웨어에서는 비디오를 직접 편집하거나 편집 스크립트를 만들 수 있지만 어떻게 해야 합니까? 이번 튜토리얼에서는 에디터가 스크립트를 편집하고 만드는 방법을 소개합니다. 제작 방법: 1. 컴퓨터에서 편집 소프트웨어를 클릭하여 연 다음 "Creation Script" 옵션을 찾아 클릭하여 엽니다. 2. 크리에이티브 스크립트 페이지에서 '스크립트 제목'을 입력한 후, 개요에 촬영 내용에 대한 간략한 소개를 입력합니다. 3. 개요에서 "스토리보드 설명" 옵션을 어떻게 볼 수 있나요?

ESD 파일을 ISO 형식으로 변환하는 방법 ESD 파일을 ISO 형식으로 변환하는 방법 Feb 19, 2024 am 08:37 AM

esd 파일은 Windows 운영 체제에서 사용되는 압축 형식이고, ISO 파일은 디스크 복사본이나 가상 광학 드라이브를 만드는 데 사용되는 디스크 이미지 파일입니다. esd 파일을 iso 파일로 변환해야 하는 경우 ISO 파일이 더 일반적으로 사용되고 사용하기 쉽기 때문일 수 있습니다. 다음은 이 변환 프로세스를 완료하는 몇 가지 일반적인 방법을 소개합니다. 방법 1: ESDDecrypter 사용 ESDDecrypter는 esd 파일을 해독하고 iso 파일로 변환하는 데 특별히 사용되는 프로그램입니다.

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Mar 14, 2024 pm 06:42 PM

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일은 일련의 명령을 실행하는 데 사용되는 셸 스크립트라는 파일입니다. .sh 파일 실행은 매우 일반적인 작업입니다. 이 기사에서는 Linux 시스템에서 .sh 파일을 실행하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 방법 1: 절대 경로를 사용하여 .sh 파일을 실행합니다. Linux 시스템에서 .sh 파일을 실행하려면 절대 경로를 사용하여 파일 위치를 지정할 수 있습니다. 구체적인 단계는 다음과 같습니다. 터미널을 엽니다.

Linux에서 파일 끝의 줄을 빠르게 삭제하는 방법 Linux에서 파일 끝의 줄을 빠르게 삭제하는 방법 Mar 01, 2024 pm 09:36 PM

Linux 시스템에서 파일을 처리할 때 파일 끝 부분의 줄을 삭제해야 하는 경우가 있습니다. 이 작업은 실제 응용 프로그램에서 매우 일반적이며 몇 가지 간단한 명령을 통해 수행할 수 있습니다. 이 기사에서는 Linux 시스템에서 파일 끝의 줄을 빠르게 삭제하는 단계를 소개하고 구체적인 코드 예제를 제공합니다. 1단계: 파일의 마지막 줄을 확인하세요. 삭제 작업을 수행하기 전에 먼저 파일의 마지막 줄이 무엇인지 확인해야 합니다. tail 명령을 사용하여 파일의 마지막 줄을 볼 수 있습니다. 특정 명령은 다음과 같습니다. tail-n1filena

Windows 7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? Windows 7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? Feb 19, 2024 pm 03:19 PM

win7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? 최근 Windows7 운영 체제를 사용하는 많은 사용자가 .bat 파일을 실행할 수 없다고 보고했습니다. 이는 광범위한 논의와 혼란을 불러일으켰습니다. 잘 작동하는 운영 체제에서 간단한 .bat 파일을 실행할 수 없는 이유는 무엇입니까? 먼저 .bat 파일의 배경을 이해해야 합니다. 배치 파일이라고도 하는 .bat 파일은 Windows 명령 해석기(cmd.ex)에서 사용할 수 있는 일련의 명령이 포함된 일반 텍스트 파일입니다.

초보자를 위한 Windows PowerShell 스크립팅 자습서 초보자를 위한 Windows PowerShell 스크립팅 자습서 Mar 13, 2024 pm 10:55 PM

우리는 기술 애호가이든 스크립팅 기술을 향상시키려는 전문가이든 초보자를 위해 이 Windows PowerShell 스크립팅 자습서를 디자인했습니다. PowerShell 스크립팅에 대한 사전 지식이 없는 경우 이 문서는 기본 사항부터 시작하여 귀하에게 맞게 조정됩니다. PowerShell 환경의 설치 단계를 익히는 데 도움을 주고 PowerShell 스크립트의 주요 개념과 기능을 안내해 드립니다. PowerShell 스크립팅에 대해 더 자세히 알아볼 준비가 되었다면 이 흥미로운 학습 여정을 함께 시작해 보세요! WindowsPowerShell이란 무엇입니까? PowerShell은 Microsoft에서 개발한 하이브리드 명령 시스템입니다.

PowerShell을 사용하여 작업을 자동화하는 방법 PowerShell을 사용하여 작업을 자동화하는 방법 Feb 20, 2024 pm 01:51 PM

IT 관리자이거나 기술 전문가라면 자동화의 중요성을 인식해야 합니다. 특히 Windows 사용자의 경우 Microsoft PowerShell은 최고의 자동화 도구 중 하나입니다. Microsoft는 타사 응용 프로그램을 설치할 필요 없이 자동화 요구 사항에 맞는 다양한 도구를 제공합니다. 이 가이드에서는 PowerShell을 활용하여 작업을 자동화하는 방법을 자세히 설명합니다. PowerShell 스크립트란 무엇입니까? PowerShell을 사용한 경험이 있다면 명령을 사용하여 운영 체제를 구성했을 수 있습니다. 스크립트는 .ps1 파일에 있는 이러한 명령의 모음입니다. .ps1 파일에는 기본 Get-Help와 같이 PowerShell에서 실행되는 스크립트가 포함되어 있습니다.

i9-12900H 매개변수 평가 목록 i9-12900H 매개변수 평가 목록 Feb 23, 2024 am 09:25 AM

i9-12900H는 14코어 프로세서로, 사용된 아키텍처와 기술이 모두 새롭고, 전반적인 작업이 매우 뛰어나며, 특히 포괄적이며 사용자에게 뛰어난 경험을 제공할 수 있습니다. . i9-12900H 매개변수 평가 검토: 1. i9-12900H는 14코어 프로세서로, q1 아키텍처와 24576kb 프로세스 기술을 채택하고 20스레드로 업그레이드되었습니다. 2. 최대 CPU 주파수는 1.80!5.00ghz이며 주로 작업량에 따라 다릅니다. 3. 가격에 비해 가격 대비 성능이 매우 적합하며 정상적인 사용이 필요한 일부 파트너에게 매우 적합합니다. i9-12900H 매개변수 평가 및 성능 벤치마크

See all articles