变量/数学运算/子进程/基本操作之类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量/数学运算/子进程/基本操作之类相关的知识,希望对你有一定的参考价值。
蛇棒,我总是会忘记蛇棒的写法,记性是越来越差了
#!/bin/bash
#!/usr/bin/env bash
shell也是一种弱数据类型的语言,申明变量也就是变量名称=变量值,当然shell中所有的变量默认都是字符串
variable_1=1;
使用的话,变量名之前加$符号就可以直接使用了。
echo $variable_1;
当需要对shell中的变量进行数学运算的时候,因为所有的变量都是字符串,所以需要借助命令方式才可以进行数学运算,整型运算使用let $[[]] ()
var_1=1;var_2=2;
echo `let var_1+var_2`;
echo $[[var_1+var_2]];#$[[$var_1+$var_2]];
echo (var_1+var_2);#$($var_1+$var_2);
小数运算需要借助bc命令了,bc不仅仅可以用作小数计算,还可以完成进制转换 记住 ibase obase 【inbase/outbase】 指定小数点位数 scale【但是貌似只有做除法运算的时候才有效果】
var_1=1.3;var_2=1.2;
echo $var_1+$var_2 | bc;
echo "$var_1+$var_2;scale=2" | bc;
echo "scale=3;1/3" | bc # .333;
echo $(printf "%.5f" `echo "scale=5;1/3" | bc`); # 0.333
shell出fork子进程的两种方式(shell命令) 反引号 `shell命令` 上面即使用到了圆括号,也使用到了反引用,有时候在使用子进程返回值的时候,并不会保留子进程中正常返回字符串中所包含的换行符号,需要将其至于双引号中才能正常显示换行符
echo 命令 默认打印字符串的时候,会在行尾加一行换行符,常用参数
-n 取消行尾自动添加换行符
-e 对escape sequence[转义序列]表示的含义输出
echo "123\n321";
输出如下
123\n321
echo -e "123\n321"
输出如下
123
321
echo $(echo -e "123\n321");
输出如下,子进程中的换行符被弄没了,变成了空格
123 321
echo "$(echo -e "123\n321")"
输出如下
123
321
获取字符串长度 #符号
var_1="test";
echo ${#var_1}
数组
arr1=(1 2 3 4)
数组元素之间既不需要任何的分隔符 (1,2,3) 就成了python中的touple了
打印出数组中的全部元素
echo ${arr_1[@]};# echo ${arr_1[*]}
逐个打印数组的元素
echo ${arr_1[1]}
数组的长度,又碰到了#号了
echo ${#arr1[@]};#echo ${#arr1[@]};
关联数组
declare -A arr_2
arr_2=([ind1]=val1 [ind2]=val2 [ind3]=val3);
echo ${arr_2[ind2]}
获取关联数组所有的值同索引数组一样
echo ${arr_2[@]};echo ${arr_2[*]}
获取关联数组所有的键 没错是周董的惊叹号~~
echo ${!arr_2[@]}; echo {!arr_2[*]}
stty 我记他的名称就是 是天天盈 因为之前有个项目就叫天天盈
他给我看来就一个用户关闭和开启回显
#!/bin/bash
stty -echo #关闭回显
read passwd
stty echo #开启回显
echo $passwd
获取用户输入
read var_1
键盘输入值存入到var_1的变量中,but 但是需要在输入内容之后按下enter键才可以
其他选项
-n 指定获取字符的长度 read -n 3 var_2;#输入长度达到3 就够了
-t 指定获取输入的等待时间 read -t 3 val_2;#两秒的时间获取变量值,过时不侯..
-d 指定获取值的分隔符 read -d ; var_2#【输入val2;】 current_var_2=val2
-p 会将变量的名称也输出到终端中
-s 输入的内容不会在终端中显示出来
tput设置终端相关
tput cup x y #将当前光标位置置于x y 坐标点
tput sc #存储当前光标的位置 store current【应该不是current】
tput rc #置回之前存储到的光标位置 restore c
tput ed #删除当前光标位置到行尾的内容
下面给一段很好玩的shell吧,接收输入一个整数【一定是整数,然后在屏幕上依次显示 count: 1 --> count: 2 ---> count: n】数字的位置不改变
#!/bin/bash
read number
echo -n "Count: ";
count=0;
while [[ $count -lt $number ]];
do
tput sc;
echo -n $count;
sleep 1;
tput rc;
tput ed;
let count+=1;
done;
while循环,if分支 中的条件都在 [[]]或者 ()中,条件表达式 和左右括号之间必须有空格
if [[ x < y ]];
then
statement;
fi;
cat命令
-T 显示制表符
-s 压缩多个空行
-n 显示每行的行号
cat file1 file2 #拼接文件
cat - file1 #拼接标准输入和文件
今天就这样吧...
以上是关于变量/数学运算/子进程/基本操作之类的主要内容,如果未能解决你的问题,请参考以下文章