shell变量的玩法(持续更新)
1、在shell中,变量(无论是否带上引号)均以字符串形式存储,因此无法直接进行数学计算,简单的计算可以用let、$(())、$[]来解决,复杂的可用expr、bc这两个工具实现。
2、计算变量的长度
length=${#test};
3、数组定义
方法①:array_var = (1 2 3 4 5 6);
方法②:array_var[0]=”test0″;array_var[1]=”test1″;array_var[2]=”test2″;
数组打印:echo ${array_var[0]}; echo ${array_var[*]};echo ${array_var[@]};
4、关联数组的定义,关联数组需要用declare进行声明,定义方法也有两个
方法①:declare -A ass_array;ass_array=([index1]=val1 [index2]=val2 );
方法②:declare -A ass_array;ass_array[index1]=1;ass_array[index2]=2;
列出数组索引?很简单。
echo ${!array_var[*]};或者echo ${!array_var[@]};
5、shell脚本里面一些特殊变量
$?:代表命令执行的结果,0代表正常,非0即为异常;
$1、$2、$3…$n:代表传递给脚本的参数1、2、3…n
$*:传递给脚本的所有参数,即”$1c$2c$3“(c是IFS的第一个字符)
$@:传递给脚本的所有参数,形成一个数组。
6、子shell法与反引号法,可将命令执行结果保存在变量中
result=”$(command)”;(放在双引号中可以保留空格和换行符)
result=”`command`”;
7、read常用用法
①read -p “Enter input:” var
②read -n 2 var
8、linux关于时间的概念,
访问时间(-atime):用户最近一次访问文件的时间
修改时间(-mtime):文件内容被最后一次修改的时间
变化时间(-ctime):文件元数据(如权限或所有权)最后一次被修改的时间。
利用find就可以方便列出这些文件
find . -maxdepth 1 -type f -atime 7
//当前目录层里7天前被访问过的文件
find . -mindepth 3 -type f -atime -7
//当前目录层里7天内被访问过的文件
9、获得一个进程的环境变量
首先利用pgrep ‘mysql’ 获得进程号,然后cat /proc/$PID/environ