变量/数学运算/子进程/基本操作之类

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 #拼接标准输入和文件

 

今天就这样吧...

以上是关于变量/数学运算/子进程/基本操作之类的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs dataview XTemplate里 两个变量做 数学运算操作

Linux操作系统&&进程概念

Linux操作系统&&进程概念

Linux操作系统&&进程概念

Linux操作系统&&进程概念

子进程怎么操作父进程中的变量