bash中的引号:
双引号 "":会把引号的内容当作整体来看待,允许通过 $ 符合引用其他变量值。
单引号'':会把引号的内容当作整体来看待,禁止引用其他变量值,shell中特殊符号都会被视为普通字符。
反撇号` `:反撇号和$()一样,引号或括号里的命令回优先执行,如果存在嵌套的话,反撇号不能用。
接受用户变量 read
read -p
定义提示用户信息。
read -n
定义字符数。
read -s
不显示用户输入的内容。
read -t
定义超时时间,默认单位为秒。
定义有类型的变量(declare)
declare -i 变量名
讲变量变成整数
declare -r 变量名
定义只读变量
declare -a 变量名
定义普通数组(下标为整数)
declare -A 变量名
定义关联数组(下标为字符串)
declare -x 变量名
将变量通过环境导出
注意:普通数组可以一次赋多个值,多个元素用空格隔开。下标从0开始,而关联数据必须通过下标去赋值。
内置参数
$? 上一条命令执行后返回的状态,0表示执行正常,非0表示执行异常或错误
$0 当前执行的程序或脚本名
$# 脚本后面的参数个数
$* 脚本后面所有参数,当作一个整体输出,每一个变量参数之间用空格隔开。
$@ 脚本后面所有参数,参数是独立的。也是全部输出.
$1-$9 脚本后面的位置参数,$1代表第一个参数,一次类推。
${10}-${n} 扩展位置参数,第十个位置必须使用{}括起来(2位数及以上需要括起来)
$$ 当前进程的进程号
$! 后台运行的最后一个进程号
!$ 调用最后一条命令历史中的参数
返回字符串的长度
案列:
[root@Hadoop01 myshell]# qwe=helloworld
[root@Hadoop01 myshell]# echo ${#qwe}
10
echo 开启转义
echo 有个选项 -e 代表开启转义
#!/bin/bash
echo "hello1"
echo -e "hello2\c" # 不换行
echo -e "hello\t3" # 制表符
echo -e "hel\nlo4" # 换行
echo "hello5"
echo写入文件
echo "hello5" > a.txt
四则运算符号
+ - * / %
$(()) echo $((1+1))
$[] echo $[10-5]
expr expr 1 + 1 # 注意空格
# 注意: * 在linux代表通配符 使用的时候需要转义
let n=1;let n+=1
i++和++i
i++:先打印后加法
++i:先加法后打印