shell 一门脚本编程语言,有时又叫bash,写在后缀为.sh的文件中,在终端中执行,。
自己学习与练习可以在terminal终端通过sh test.sh或者直接将写入test.sh里面的code 在 https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash上运行。
目录
shell 注释
单行用# ,多行以:<<EOF(任意符号)开始,最后一行用同样的EOF符号结束。
shell命令执行
sh -x test.sh 加了-x 参数,在terminal下可以看test.sh里面转换后的命令逐步的执行情况。
对于不懂的命令可以直接在mac 的terminal终端中运行用man命令查看其定义,比如对于dirname,则在mac终端中输入man dirname 则可以看到函数dirname定义等。然后摁住q则退出提示。
常见特殊变量与含义
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是1,第二个参数是1,第二个参数是2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
shell 变量
变量定义注意=之间两侧不能有空格
your_name="runoob.com"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
your_name="qinjx" echo $your_name echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,
shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
(3)如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。
#!/bin/bash
function Hello()
{
local text="Hello World!!!" #局部变量
echo $text
}
Hello
单引号字符串的限制:
- 单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
注意赋值的=两侧不能有空格,这不同与Python习惯性有空格,此处有严格要求不能有空格。
字符串使用双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
如:
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
#!/bin/bash
your_name="runob"
#使用双引号拼接
greeting1="hello,${your_name} !"
echo ${greeting1}
#使用单引号拼接
greeting3='hello,${your_name} !'
echo ${greeting3}
输出结果为:
Hello, I know you are "runoob"!
hello,runob !
hello,${your_name} !
其中的echo 命令,用于在terminal终端显示输出。格式为:
echo 要输出的内容,注意中间要有空格。