智能营销笔记本服务商

营销笔记本+万能采集+AI名片+智能电销+短信群发=同步管理

免费咨询热线: 15064770313

初学者shell脚本基本命令介绍

你好,这是一个shell脚本的介绍,为初学者介绍了基本的命令。智程网络科技_智能营销笔记本软件开发_大数据营销笔记本系统定制_营销软件-曲阜市智程网络科技有限公司
最后,让我们编写一个简单的 shell 脚本,一次性更改文件名。
环境:Mac OSX El Capitan Terminal;bash/sh shell环境;

什么是外壳脚本?

  • 简单地说,shell 脚本只是并行执行 Unix 命令。

  • 它负责在什么时候什么条件下执行什么命令,读取文件内容,写入日志文件。

基本设定

test.sh创建一个文件。

测试.sh

#!/bin/sh  echo "Hello, World!"
  • Shell 脚本文件基本上.sh是使用扩展名创建的。

  • 在编写实际代码之前,第一行是#!/bin/sh告诉系统从现在开始编写一个 shell 脚本。(因为#is hash!is bang#!所以称为shebang。)但是,#!/bin/bash如果要使用 bash 的独特功能,则必须编写 “bashism” 。)

  • 要运行 shell 脚本文件 (test.sh),您可以从终端使用以下命令之一在文件保存位置运行它。

$ chmod 755 test.sh $ ./test.sh
$ sh test.sh
$ bash test.sh

执行文件Hello, World!时显示。

基本命令

评论

#你可以写评论。

测试.sh

#!/bin/sh  # これはコメントです # echo "コメントは実行されません!"  echo "Hello, World!"

输入输出

echo输出read和输入。

测试.sh

#!/bin/sh  read NAME echo "Hello, $NAME!"

执行结果,

$ ./test.sh Tensai Hello, Tensai!

等待输入时脚本不会继续。
Bash 允许-e您使用标志转义特殊文本。

#!/bin/bash echo -e "Hello\n$NAME!" #改行されます

多变的

  • 您可以使用单字节字母数字字符和下划线作为变量名。a 到 z、A 到 Z、0 到 9 和 _

  • 写下为变量赋值的时间,=不带任何前导或尾随空格。在字符串的情况下将其括起来"

  • 访问变量$时,将其放在变量名之前。或者$将其放入{}并将变量包含在其中。

  • 一个变量只能存储一个值。

  • 用于防止变量的值被覆盖readonly

  • unset您可以使用 删除变量。readonly变量不能被删除。)

测试.sh

#!/bin/sh  var="これは変数です" VaR_2="これも変数です" echo "Var_2=$VaR_2"  VaR_2="VaR_2が変更されました。" echo ${VaR_2}  readonly var var="readonly varを変えてみる。"

执行结果,

$ ./test.sh Var_2=これも変数です VaR_2が変更されました。 shell.sh: line 11: var: readonly variable

特殊变量

shell 脚本具有以下特殊变量:

多变的功能
$ 0脚本名称
$ 1 ~ $ 9访问参数、第一个参数和$1第二个参数$2
$ #给脚本的参数数量
$ *将所有参数作为一个整体处理
$@单独处理所有参数
美元?最后执行命令的结束值(0 为成功,1 为失败)
$$$$此 shell 脚本的进程 ID
美元!上次运行后台进程 ID

测试.sh

#!/bin/sh  echo "\$0(スクリプト名): $0" echo "\$1(1番目の引数): $1" echo "\$2(2番目の引数): $2" echo "\$#(引数の数): $#" echo "\"\$*\": \"$*\"" echo "\"\$@\": \"$@\"" VAR="exit値は0になるはずです" echo $?

执行结果,

$ ./test.sh first second 3rd $0(スクリプト名): test.sh $1(1番目の引数): first $2(2番目の引数): second $3(3番目の引数): 3rd $#(引数の数): 3 "$*": "first second third" "$@": "first second third" 0

特殊字符

* ? [ ' " ` \ $ ; & ( ) | ~ < > # % = スペース タブ 改行 是 shell 脚本中的特殊字符。将其用作字符串\时,请在使用前写入。

变量值替换

语法解释
$ {变量}交换变量值
$ {var: -word}如果变量尚未设置或为空字符串,则返回word 。不要保存到 var
$ {var: = 单词}如果变量尚未设置或为空字符串,则返回word 。保存到变量
$ {var:?word}如果变量尚未设置或为空字符串,则替换将失败并在标准错误中显示错误。
$ {var: + 单词}如果设置了变量,则返回一个单词。不要保存到 var

测试.sh

#!/bin/sh  echo "1 - ${var:-wordSetInEcho1}" echo "2 - var = ${var}" echo "3 - ${var:=wordSetInEcho3}" echo "4 - var = ${var}" unset var echo "5 - ${var:+wordSetInEcho5}" echo "6 - var = $var" var="newVarValue" echo "7 - ${var:+wordSetInEcho7}" echo "8 - var = $var" echo "9 - ${var:?StandardErrorMessage}" echo "10 - var = ${var}"

执行结果:

1 - wordSetInEcho1 2 - var =  3 - wordSetInEcho3 4 - var = wordSetInEcho3 5 -  6 - var&a