你好,这是一个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