Inhaltsverzeichnis
1 Warum heißt es Shell? " >1 Warum heißt es Shell?
2. Welche Beziehung besteht zwischen Shell-Eingabeaufforderung (PS1) und Carriage Return (CR)? " >2. Welche Beziehung besteht zwischen Shell-Eingabeaufforderung (PS1) und Carriage Return (CR)?
3. Andere echo, und Sie echo auch. Wie viel wissen Sie über echo? " >3. Andere echo, und Sie echo auch. Wie viel wissen Sie über echo?
4. Was ist der Unterschied zwischen doppelten Anführungszeichen "" und einfachen Anführungszeichen ''?" >4. Was ist der Unterschied zwischen doppelten Anführungszeichen "" und einfachen Anführungszeichen ''?
5、var=value? export 前后差在哪?" >5、var=value? export 前后差在哪?
6、exec 跟 source 差在哪?" >6、exec 跟 source 差在哪?
7、( ) 与 { } 差在哪?" >7、( ) 与 { } 差在哪?
8、$(()) 与 $() 还有 ${} 差在哪?" >8、$(()) 与 $() 还有 ${} 差在哪?
9、$@ 与 $* 区别在哪?" >9、$@ 与 $* 区别在哪?
10. Was ist der Unterschied zwischen && und ||? " >10. Was ist der Unterschied zwischen && und ||?
11、> 与 < 差在哪?" >11、> 与 < 差在哪?
12、你要if还是case呢?" >12、你要if还是case呢?
13、for what? while与until差在哪?" >13、for what? while与until差在哪?
Heim Betrieb und Instandhaltung Betrieb und Wartung von Linux Klassische dreizehn Fragen zu Shell-Skripten

Klassische dreizehn Fragen zu Shell-Skripten

Aug 03, 2023 pm 03:03 PM
shell shell脚本


"Klassische

1 Warum heißt es Shell?

Wir wissen, dass der Betrieb eines Computers untrennbar mit der Hardware verbunden ist, aber er kann die Hardware nicht direkt bedienen. Der Treiber der Hardware kann nur von einer Software namens „OS“ (Betriebssystem) gesteuert werden Ein Betriebssystem (OS).

Benutzer können den Kernel nicht direkt bedienen, sondern über das „Shell“-Programm des Kernels kommunizieren, die sogenannte Shell ist eine Schnittstelle zwischen dem Benutzer und dem System. Das System kann nur zum Ausführen von Arbeiten über die Befehlszeile verwendet werden. Daher lautet die einfachste Definition von Shell: Befehlsinterpreter (Befehlsinterpreter)

  • Übersetzt die Befehle des Benutzers zur Verarbeitung in den Kernel Gleichzeitig werden die Kernel-Verarbeitungsergebnisse für den Benutzer übersetzt.

  • Verschiedene Betriebssysteme verwenden unterschiedliche Kernel usw.

    2. Welche Beziehung besteht zwischen Shell-Eingabeaufforderung (PS1) und Carriage Return (CR)?

    Nach erfolgreicher Anmeldung an einem Shell-Terminal wird der Teil links vom Cursor als Eingabeaufforderung bezeichnet, die normalerweise von normalen Benutzern verwendet wird. $,管理员用户使用#

    • Shell-Eingabeaufforderung: Nach der Eingabe des Befehls können Sie Befehle eingeben , es wird erst gelesen, wenn CR (Carriage Return) Zeichen gelesen werden

    • Carriage Return: Der Befehl kann ausgeführt werden

    Wenn Sie sich die technischen Details ansehen, wird die Shell den Text zerlegen über die Befehlszeile in „Felder“ basierend auf IFS (Internal Field Seperator) eingegeben (Wort/Feld). Anschließend werden zunächst die Sonderzeichen (Meta) verarbeitet und schließlich die gesamte Befehlszeile neu organisiert.

    3. Andere echo, und Sie echo auch. Wie viel wissen Sie über echo?

    echo sendet das Argument an die Standardausgabe (stdout), die normalerweise auf dem Bildschirm angezeigt wird

    STDIN-Standardeingabe
    STDOUT-Standardausgabe
    STDERR-Standardfehlerausgabe

    echo -n  # 取消换行符
    echo -e  # 启用反斜杠转译
    Nach dem Login kopieren

    4. Was ist der Unterschied zwischen doppelten Anführungszeichen "" und einfachen Anführungszeichen ''?

    • Hard Quote: '' (einfaches Anführungszeichen), alle Referenzen schließen&#39;&#39;(单引号),关闭所有引用

    • soft quote:""(双引号),保留$引用

    5、var=value? export 前后差在哪?

    • 变量定义:name=value,等号左右两边不能使用分隔符。

    • 变量替换:echo ${name}

    • 🎜weiches Zitat: " (doppelte Anführungszeichen) , reserviert $Quote🎜
    🎜🎜5. var=value? export Was ist der Unterschied? 🎜🎜🎜🎜🎜Variablendefinition: name=value können auf der linken und rechten Seite des Gleichheitszeichens keine Trennzeichen verwendet werden. 🎜
  • 🎜🎜Variablensubstitution: echo ${name 🎜
  • export变量:export name=value,使变量成为环境变量

# 本地变量
A=B
# 取消变量
unset A
# 环境变量export A=B
Nach dem Login kopieren

6、exec 跟 source 差在哪?

环境变量只能从父进程到子进程单向传递。换句话说:在子进程中环境如何变更,均不会影响父进程的环境。
当我们执行一个shell script时,其实是先产生一个sub-shell的子进程, 然后sub-shell再去产生命令行的子进程。关注Linux中文社区

# 创建子shell执行脚本
./1.sh
# 当前shell执行
source 1.sh
# 当前shell执行后退出
exec 1.sh
Nach dem Login kopieren

7、( ) 与 { } 差在哪?

( )将 command group 置于 sub-shell 执行
{ }则是在同一个shell内完成

8、$(()) 与 $() 还有 ${} 差在哪?

# 假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
# 我们可以用 ${ } 分别替换获得不同的值:

# 1. shell字符串的非贪婪(最小匹配)左删除
${file#*/} # 拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
# 2. shell字符串的贪婪(最大匹配)左删除
${file##*/} # 拿掉最后一条 / 及其左边的字符串:my.file.txt
${file##*.} # 拿掉最后一个 . 及其左边的字符串:txt
# 3. shell字符串的非贪婪(最小匹配)右删除:
${file%/*} # 拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%.*} # 拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
# 4. shell字符串的贪婪(最大匹配)右删除:
${file%%/*} # 拿掉第一条 / 及其右边的字符串:(空值)
${file%%.*} # 拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是去掉左边(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
Nach dem Login kopieren

# 5. shell字符串取子串:
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2

# 6. shell字符串变量值的替换:
${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

# 7. ${}还可针对变量的不同状态(没设定、空值、非空值)进行赋值:
${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理) 
${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。(非空值时不作处理)
${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)
${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。(没设定及空值时不作处理)
${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(空值及非空值时不作处理)
${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(非空值时不作处理)
${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。(空值及非空值时不作处理)
${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。(非空值时不作处理)

tips:
以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.
一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响.
Nach dem Login kopieren

# 8. 计算shell字符串变量的长度:${#var}
${#var} 可计算出变量值的长度:
${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节...

# 9. bash数组(array)的处理方法
数组:
A=(a b c d)
引用数组:
${A[@]}
${A[*]}
访问数组成员
${A[0]}
计算数组长度
${#A[@]}
${#A[*]}
数组重新赋值
A[2]=xyz

# 10.$(( ))是用来做整数运算的 
a=5;b=7;c=2;
echo $(( a + b * c))
Nach dem Login kopieren

9、$@ 与 $* 区别在哪?

  • "$@"则可得到 “p1” “p2 p3” “p4” 这三个不同的词段

  • "$*"Sie können eine ganze Reihe einzelner Phrasen wie „p1 p2 p3 p4“ erhalten

  • Durchsuchen Sie außerdem das öffentliche Linux-Konto, um zu erfahren, wie Sie im Hintergrund auf „Git Books“ antworten, und erhalten Sie ein Überraschungsgeschenkpaket .

10. Was ist der Unterschied zwischen && und ||?

1. Der Testbefehl hat zwei Formen: Testausdruck:

Zeichenfolge: Zeichenfolge
  • Ganzzahl: Ganzzahl
  • Datei: Datei

3、当 expression 为真是返回 0(true) ,否则返回 非0(false)

  • command1 && command2 command2 只有在 command1 的RV为0(True)的条件下执行。

  • command1 || command2 command2只有在command1的RV为非0(False)的条件下执行。

4、先替换变量再比较

A=123[ -n "$A" ] && ([ "$A" -lt 100 ] || echo "too big")unset A
Nach dem Login kopieren

11、> 与 < 差在哪?

0: Standard Input(STDIN)
1: Standard Output (STDOUT)
2: Standard Error Output(STDERR)

我们可用 < 来改变读进的数据信道(stdin),使之从指定的档案读进。

我们可用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。

ls my.file no.such.file 1> file.out 2>file.err
# 2>&1 就是将stderr并进stdout做输出
ls my.file no.such.file 1> file.out 2>&1
# /dev/null 空
ls my.file no.such.file >/dev/null 2>&1

cat < file > file
# 在 IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料。
# 也就是说,在上例中,> file 会先将 file 清空,然后才读进 < file , 
# 但这时候档案已经被清空了,因此就变成读不进任何数据了
Nach dem Login kopieren

12、你要if还是case呢?

# if
echo -n "Do you want to continue?(Yes/No):"
read YN
if [ "$YN"=Y -o "$YN"=y -o "$YN"="Yes" -o "$YN"="yes" -o "$YN"="YES"];then
echo "continue"
else
exit 0
fi

# case
echo -n "Do you want to continue?(Yes/No):"
read YN
case "$YN" in
[Yy]|[Yy][Ee][Ss])
echo "continue"
;;
*)
exit 0
esac
Nach dem Login kopieren

13、for what? while与until差在哪?

# for
for ((i=1;i<=10;i++))
do
echo "num is $i"
done

# while
num=1
while [ "$num" -le 10 ]; do
echo "num is $num"
num=$(($num + 1))
done

# until
num=1
until [ "$num" -gt 10 ]; do
echo "num is $num"
num=$(($nu + 1))
done
Nach dem Login kopieren
  • break 是结束 loop

  • return 是结束 function

  • exit 是结束 script/shell

Das obige ist der detaillierte Inhalt vonKlassische dreizehn Fragen zu Shell-Skripten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So konvertieren Sie ESD-Dateien in das ISO-Format So konvertieren Sie ESD-Dateien in das ISO-Format Feb 19, 2024 am 08:37 AM

Eine ESD-Datei ist ein Komprimierungsformat, das in Windows-Betriebssystemen verwendet wird, während eine ISO-Datei eine Disc-Image-Datei ist, die zum Erstellen einer Disc-Kopie oder eines virtuellen optischen Laufwerks verwendet wird. Wenn wir ESD-Dateien in ISO-Dateien konvertieren müssen, liegt das möglicherweise daran, dass ISO-Dateien häufiger verwendet werden und einfacher zu verwenden sind. Im Folgenden werden einige gängige Methoden zum Abschließen dieses Konvertierungsprozesses vorgestellt. Methode 1: ESDDecrypter verwenden ESDDecrypter ist ein Programm, das speziell zum Entschlüsseln und Konvertieren von ESD-Dateien in ISO-Dateien verwendet wird.

Wie führe ich eine .sh-Datei im Linux-System aus? Wie führe ich eine .sh-Datei im Linux-System aus? Mar 14, 2024 pm 06:42 PM

Wie führe ich eine .sh-Datei im Linux-System aus? In Linux-Systemen ist eine .sh-Datei eine Datei, die als Shell-Skript bezeichnet wird und zum Ausführen einer Reihe von Befehlen verwendet wird. Das Ausführen von .sh-Dateien ist ein sehr häufiger Vorgang. In diesem Artikel wird erläutert, wie .sh-Dateien in Linux-Systemen ausgeführt werden, und es werden spezifische Codebeispiele bereitgestellt. Methode 1: Verwenden Sie einen absoluten Pfad, um eine .sh-Datei auszuführen. Um eine .sh-Datei in einem Linux-System auszuführen, können Sie einen absoluten Pfad verwenden, um den Speicherort der Datei anzugeben. Im Folgenden sind die spezifischen Schritte aufgeführt: Öffnen Sie das Terminal

So löschen Sie schnell die Zeile am Ende einer Datei unter Linux So löschen Sie schnell die Zeile am Ende einer Datei unter Linux Mar 01, 2024 pm 09:36 PM

Bei der Verarbeitung von Dateien unter Linux-Systemen ist es manchmal erforderlich, Zeilen am Ende der Datei zu löschen. Dieser Vorgang kommt in praktischen Anwendungen sehr häufig vor und kann durch einige einfache Befehle erreicht werden. In diesem Artikel werden die Schritte zum schnellen Löschen der Zeile am Ende der Datei im Linux-System vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: Überprüfen Sie die letzte Zeile der Datei. Bevor Sie den Löschvorgang durchführen, müssen Sie zunächst bestätigen, welche Zeile die letzte Zeile der Datei ist. Sie können den Befehl tail verwenden, um die letzte Zeile der Datei anzuzeigen. Der spezifische Befehl lautet wie folgt: tail-n1filena

Geheimnisse des Linux-Root-Dateisystems Geheimnisse des Linux-Root-Dateisystems Feb 15, 2024 pm 01:42 PM

Linux ist ein Open-Source-, portables und anpassbares Betriebssystem, das in verschiedenen Bereichen wie Servern, Desktops, eingebetteten Geräten usw. weit verbreitet ist. Der Kern von Linux ist der Kernel, der für die Verwaltung der Hardwareressourcen und die Bereitstellung grundlegender Dienste verantwortlich ist. Der Kernel ist jedoch keine unabhängige Einheit und benötigt ein Dateisystem, um verschiedene Daten und Programme zu speichern und darauf zuzugreifen. Ein Dateisystem ist eine Methode zum Organisieren und Verwalten von Dateien. Es definiert den Namen, den Speicherort, die Attribute, Berechtigungen und andere Informationen der Datei. Unter Linux gibt es viele verschiedene Arten von Dateisystemen, wie z. B. ext4, xfs, btrfs usw., von denen jedes seine eigenen Eigenschaften und Vorteile hat. Unter allen Dateisystemen gibt es jedoch ein spezielles Dateisystem, das die Grundlage und den Kern des Linux-Systems bildet

Warum kann ich die Bat-Datei unter Windows 7 nicht ausführen? Warum kann ich die Bat-Datei unter Windows 7 nicht ausführen? Feb 19, 2024 pm 03:19 PM

Warum kann win7 keine Bat-Dateien ausführen? In letzter Zeit haben viele Benutzer, die das Betriebssystem Windows 7 verwenden, berichtet, dass sie keine .bat-Dateien ausführen können. Dies löste weitreichende Diskussionen und Verwirrung aus. Warum kann ein gut funktionierendes Betriebssystem keine einfache .bat-Datei ausführen? Zuerst müssen wir den Hintergrund der .bat-Datei verstehen. Eine .bat-Datei, auch Batchdatei genannt, ist eine reine Textdatei, die eine Reihe von Befehlen enthält, die vom Windows-Befehlsinterpreter (cmd.ex) verwendet werden können

Windows PowerShell-Skript-Tutorial für Anfänger Windows PowerShell-Skript-Tutorial für Anfänger Mar 13, 2024 pm 10:55 PM

Wir haben dieses Windows PowerShell-Skript-Tutorial für Anfänger entwickelt, egal ob Sie ein Technikbegeisterter oder ein Profi sind, der seine Skriptfähigkeiten verbessern möchte. Wenn Sie keine Vorkenntnisse in PowerShell-Skripting haben, beginnt dieser Artikel mit den Grundlagen und ist auf Sie zugeschnitten. Wir helfen Ihnen, die Installationsschritte für eine PowerShell-Umgebung zu meistern und führen Sie durch die wichtigsten Konzepte und Funktionen von PowerShell-Skripten. Wenn Sie bereit sind, mehr über PowerShell-Skripting zu erfahren, begeben wir uns gemeinsam auf diese spannende Lernreise! Was ist WindowsPowerShell? PowerShell ist ein von Microsoft entwickeltes hybrides Befehlssystem

So automatisieren Sie Aufgaben mit PowerShell So automatisieren Sie Aufgaben mit PowerShell Feb 20, 2024 pm 01:51 PM

Wenn Sie ein IT-Administrator oder Technologieexperte sind, müssen Sie sich der Bedeutung der Automatisierung bewusst sein. Insbesondere für Windows-Benutzer ist Microsoft PowerShell eines der besten Automatisierungstools. Microsoft bietet eine Vielzahl von Tools für Ihre Automatisierungsanforderungen, ohne dass Sie Anwendungen von Drittanbietern installieren müssen. In diesem Leitfaden erfahren Sie, wie Sie PowerShell zur Automatisierung von Aufgaben nutzen können. Was ist ein PowerShell-Skript? Wenn Sie Erfahrung mit PowerShell haben, haben Sie möglicherweise Befehle zum Konfigurieren Ihres Betriebssystems verwendet. Ein Skript ist eine Sammlung dieser Befehle in einer .ps1-Datei. .ps1-Dateien enthalten von PowerShell ausgeführte Skripte, z. B. grundlegende Get-Help

So öffnen Sie eine URL-Datei So öffnen Sie eine URL-Datei Mar 28, 2024 pm 06:27 PM

Zu den Methoden zum Verwenden von URL-Dateien zum Öffnen von Internetressourcen gehören: Doppelklick zum Öffnen mit einem Webbrowser. Öffnen Sie es mit einem Texteditor, kopieren Sie die Linkadresse und fügen Sie sie in die Adressleiste des Browsers ein. Verwenden Sie über die Befehlszeile den Befehl „start“ oder „open“, um den URL-Dateipfad anzugeben. Erstellen Sie eine Skriptdatei mit dem Befehl zum Öffnen der URL-Datei.

See all articles