#!/bin/bash
"#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
更改脚本文件的执行权限
chmod 7 test.bash ----- 7的分配:读(4)写(2)执行(1)(bash的解释器兼容sh的解释器)
执行脚本的时候需要加./告知shell执行器在当前目录下寻找该shell(linux的path路径下只有/bin, /sbin, /usr/bin,/usr/sbin)
也可以将脚本作为解释器的参数执行:
1 /bin/sh test.sh
test:
1 echo "what's your name?" 2 read PERSON 3 echo "Hello,$PERSON"
变更权限:chmod 7 ./tesh.sh
定义变量
定义变量时,变量名不加美元符号($),如:
- variableName="value"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 首个字符必须为字母(a-z,A-Z)。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
myname="rensen"
readonly myname
myname="wangrensen"将会报错:/bin/sh: myname: This variable is read only.
删除变量:
java="hello"
unset java unset不能删除只读变量
变量类型:
局部变量、环境变量、shell变量。
变量 | 含义 |
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
a=10 echo -e "the value is $a \n"
输入-e表示对转义字符进行替换。若不用-e则会原样输出。(the value is $a \n)
对表达式求值
a=10 b=20 c=`expr $a + $b`
d=`expr $a - $b`
e=`expr $a \* $b`
f=`expr $a \ $b` echo $c
定义数组,用空格隔开。
获取数组的长度
length=${array[@]}
length=${array[*]}
#获取单个元素的长度
lengthn=${array[n]}
显示结果重定向至文件:
echo "hello,world" > filename
需要原样输出字符串则可以用单引号
echo `date`显示当前日期。