Heim > Artikel > Betrieb und Instandhaltung > Was bedeutet der Linux-Befehl sh?
linux-Befehl sh ist der Befehl zum Ausführen der Shell unter Linux und der Interpreter der Shell. Das Shell-Skript ist die Shell- und Befehlszeilenschnittstelle in Linux verschiedene Aufgaben ausführen.
Was bedeutet der Linux-Befehl sh?
notwendig ist, um das Shell-Programm strenger zu machen .
nicht erforderlich, Variablen zu deklarieren. Um einer Variablen einen Wert zuzuweisen, können Sie so schreiben:
#!/bin/sh #对变量赋值: a=”hello world”# 现在打印变量a的内容: echo “A is:” echo $aManchmal werden Variablennamen leicht mit anderen Wörtern verwechselt, wie zum Beispiel:
num=2 echo “this is the $numnd”Das wird nicht ausgedruckt „this is the 2nd“, gibt aber nur „this is the“ aus, da die Shell nach dem Wert der Variablen numnd sucht, diese Variable jedoch keinen Wert hat. Daher können Sie geschweifte Klammern verwenden, um der Shell mitzuteilen, dass wir die Num-Variable drucken möchten:
num=2 echo “this is the ${num}nd”Dadurch wird „das ist der 2.“ #🎜 ausgegeben 🎜##🎜 🎜#4. Shell-Befehle und Prozesssteuerung
echo "some text" #将文字内容打印在屏幕上 ls #文件列表 cp sourcefile destfile #文件拷贝 mv oldname newname #重命名文件或移动文件 rm file #删除文件 grep 'pattern' file #在文件内搜索字符串,如:grep 'searchstring' file.txt cat file.txt #输出文件内容到标准输出设备(屏幕)上 read var #显示用户输入,并将输入赋值给变量
Konzept: Pipe, Redirect und Backtick (Backslash)
grep "hello" file.txt | wc -lDer obige Code wird ausgedrückt als: Suchen Sie in file.txt nach Zeilen, die „Hallo“ enthalten, und zählen Sie die Anzahl der Zeilen. Hier wird die Ausgabe des grep-Befehls als Eingabe des wc-Befehls verwendet.
{}
und {}
Externe Zuweisung), wie zum Beispiel der folgende Befehl: #!/bin/shecho 1 2 3 | { read a b c ; echo $a $b $c ; } # 打印结果为: 1 2 3echo $a $b $c # 打印结果为空
|
将一个命令的输出作为另外一个命令的输入。find . -mtime -1 -type f -print
上述代码表示为:在 file.txt 中搜索包含有 “hello” 的行并计算其行数。在这里grep命令的输出作为wc命令的输入。
需要注意的是,管道后的命令是子命令,并不会出现在接下来的命令中(有点像C++在{}
内和{}
外赋值的区别),如以下命令:
#!/bin/sh # The ticks are backticks (`) not normal quotes (‘): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
重定向
:将命令的结果输出到文件,而不是标准输出(屏幕)。
>写入文件并覆盖旧文件
>>追加到文件的尾部,保留旧文件内容。
反短横线 “`”:使用反短横线可以将一个命令的输出作为另一个命令的一个命令行参数。
if ….; then …. elif ….; then …. else …. fi #注意是以fi结尾
上述语句用来查找过去24小时(-mtime -2则表示过去48小时)内修改过的文件。如果想将所有查找到的文件打一个包,则可以使用一下linux脚本:
# expression 1# while循环:当expresssion成立的时候,执行cmdwhile (expresssion)do cmddone# expression 2,可以直接使用truewhile true(或 :)do cmddone
ifif
表达式,如果条件为真则执行 then
后面的部分:
# 寻找 ${path} 路径下唯一首字母为‘E’的子目录,并 cd 到该目录find ${path}/E* -type d | while read corresp_pathdo cd ${corresp_path}done
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件时都存在以及是否可读等等…
whilewhile
Redirect
: Leiten Sie den Befehl um. Ergebnisse werden ausgegeben in eine Datei statt in die Standardausgabe (den Bildschirm).
überschreiben Sie die
alte Datei. >> Hängen Sie an das Ende der Datei an und behalten Sie die alte Datei bei Inhalt.
Anti-Bindestrich"`": Verwenden Sie Anti-Bindestrich, um
für einen anderen Befehl.
[ -f "somefile" ] #判断文件是否存在 [ -d "testResults/" ] #判断目录testResults/是否存在 [ -x "/bin/ls" ] #判断/bin/ls文件是否存在并有可执行权限 [ -n "$var" ] #判断$var变量是否有值 [ "$a" = "$b" ] #判断$a和$b是否相等Die obige Anweisung wird verwendet, um Dateien zu finden, die in den letzten 24 Stunden geändert wurden (-mtime -2 bedeutet die letzten 48 Stunden). Wenn Sie alle gefundenen Dateien packen möchten, können Sie das Linux-Skript verwenden:
[ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”
Process Control #🎜 🎜#if
if
Ausdruck, wenn die Bedingung wahr ist, führen Sie den Teil nach then
aus: #!/bin/sh
mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感觉这里的‘’应该是||
echo “$mailfolder has mail from:” grep “^From ” $mailfolder
#🎜🎜 #In In den meisten Fällen können Sie Testbefehle verwenden, um Bedingungen zu testen. Sie können beispielsweise Zeichenfolgen vergleichen, feststellen, ob Dateien vorhanden sind und ob sie lesbar sind usw. Die Syntaxstruktur der while
-Schleife lautet:
#!/bin/sh mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感觉这里的‘’应该是|| echo “$mailfolder has mail from:” grep “^From ” $mailfolder
该脚本首先判断mailfolder是否可读。如果可读则打印该文件中的”From” 一行。如果不可读则或操作生效,打印错误信息后脚本退出。这里有个问题,那就是我们必须有两个命令:
◆打印错误信息
◆退出程序
我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。
不用‘与’和‘或’操作符,我们也可以用if表达式作任何事情,但是使用与或操作符会更便利很多。
推荐学习:《linux视频教程》
Das obige ist der detaillierte Inhalt vonWas bedeutet der Linux-Befehl sh?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!