shell学习笔记(一)
一、shell变量
定义:变量=值
注意:赋值的等号前后不能有空格
使用:在变量的前面加上$,推荐给所有变量加上花括号{ }
author="严长生"
echo $author
echo ${author}
单引号和双引号的区别:
- 以单引号’ '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。
- 以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
二、变量的替换
- 使用``单引号Esc键下面那个:
variable=`commands`
- 使用$()
variable=$(commands)
commands 可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔。
例子:
#!/bin/bash
begin_time=`date` #开始时间,使用``替换
sleep 20s #休眠20秒
finish_time=$(date) #结束时间,使用$()替换
echo "Begin time: $begin_time"
echo "Finish time: $finish_time"
三、位置参数
特殊变量$n 用来接收传递的参数,称为位置参数
场景如下:
1、执行脚本时,传递的参数
2、调用函数时传递的参数,但是shell中函数定义不能有参数
例子:
#!/bin/bash
#编写test.sh
echo "Language: $1"
echo "URL: $2"
[mozhiyan@localhost demo]$./test.sh Shell http://c.biancheng.net/shell/
Language: Shell
URL: http://c.biancheng.net/shell/
shell就是执行传递的第一个参数,http://c.biancheng.net/shell/是传递的第二个参数。
#!/bin/bash
#定义函数
function func()
{
echo "Language: $1"
echo "URL: $2"
}
#调用函数
func C++ http://c.biancheng.net/cplus/
[mozhiyan@localhost demo]$ . /test.sh
Language: C++
URL: http://c.biancheng.net/cplus/
c++就是调用函数的第一个参数, http://c.biancheng.net/cplus/是第二个参数
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$@ | 传递给脚本或函数的所有参数 |
$? | 上个命令的退出状态,或函数的返回值 |
$$ | 当前 Shell 进程 ID |