shell 学习杂记一

变量
作用域:
命名空间不同进程ID默认为不同的命名空间
从定义的地方开始直到unset或结束都有效,函数内也可以读写
为了解决协同开发变量名同名的问题,局部变量要加local
变量名=变量值(中间无空格),值中带空格需要要""或'',如:"hello world"
变量取值,$变量名,严格如:${变量名}
unset 销毁变量和函数
特殊变量
$n 0....从执行文件开始,往后推
$# 总个数
$@ 所以参数
$? 上一个命令的返回值
$$进程ID
shift 移动位置参数,可以让参数左移,默认1位 shift 2
exec 执行完退出
RANDOM 随机值可以赋值种子


引用
""部分引用输出一致,如:var="a  b  c", input echo $var; output a b c; input echo "$var"; output a  b  cc
'' 全引用会阻止shell解释$,如:input  echo '$var';  output $var


重定向
stdin:0 stdout:1 stderr:2
> 标准输入重定向
< 标准输出重定向
>> 标准输出追加重定向
>& 标识输出重定向 2>&1 将标准错误输出重定向到标准出中
| 从上一个命令读取输出给下个命令当作输入


替换
`命令` unix大多支持,但多行的输出用``会输出一行
$() 功能一样,但只在bash中可用,支持嵌套,如: $(wc -l $(ls | sed -n '1p'))


运算
整数运算 $[] $(()) $((8#11)) 结果9 8进制11转为10进制
浮点计算bc,如:$(echo 11.33+3.22 | bc);


数组
声明:declare -a 数组名=('val1' 'val2'),简写 变量名=('val1' 'val2')
取值:${数组名[索引]} 索引为*或@时取所有,取部分${数组名[索引]:start:num}
容量:${#数组名[@]},${#数组名[*]}, 值是字符串时可取长度${#数组名[索引]}
合并:数组3=(${数组名1[@]} ${数组名2[@]})
替换:数组=(${数组[@]/target/replace})

declare/typeset 限定变量的属性
-r 只读  -i 整数  -a 数组  -f 函数 -x export
readonly 只读变量
echo -n 同行 -e不转义
local 声明局部变量
export 使变量的值能被子shell使用

let 整数运算


()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值