获得字符串长度
可以使用下面的方法获得变量var值的长度
length=${#var}
length即为var值字符串的长度
$ var="hello world"
$ echo ${#var}
11
识别当前的shell版本
方法1:
$ echo $SHELL
/bin/bash
方法2:
$ echo $0
-bash
检查脚本是以超级用户还是普通用户身份运行的
环境变量UID指示了当前脚本运行用户的user id,可以使用下面一段脚本检查用户身份:
if [ $UID -ne 0 ] #root用户的user id 为0
then
echo "Not root user. Please run as root.
else
echo "Root user"
fi
修改Bash命令行提示字符串
当我们在终端进行linux命令行操作时,会看到类似 jie@jix:~$ 这样的命令行提示字符串,实际上这个命令行提示是由环境变量PS1指定的,我们可以通过修改PS1来定制命令行提示字符串。
jie@jix:~$
jie@jix:~$ PS1="hello # "
hello # ls
code examples.desktop log.txt 公共的 模板 视频 图片 文档 下载 音乐 桌面
这种改变只是暂时性的,要想永久改变需要将在.bashrc文件中改变PS1的值。
数学运算
let命令
使用let命令可以直接执行基本的算数操作
jie@jix:~$ a=1
jie@jix:~$ b=2
jie@jix:~$ let c=a+b
jie@jix:~$ let d=a*b
jie@jix:~$ let e=a-b
jie@jix:~$ let f=a/b
jie@jix:~$ let a++
jie@jix:~$ let b--
jie@jix:~$ echo $a $b $c $d $e $f
2 1 3 2 -1 0
操作符[]
jie@jix:~$ a=1
jie@jix:~$ b=2
jie@jix:~$ c=$[$a+$b]
jie@jix:~$ d=$[$a-$b]
jie@jix:~$ e=$[$a*$b]
jie@jix:~$ f=$[$a/$b]
jie@jix:~$ echo $c $d $e $f
3 -1 2 0
let命令和操作符[]只能用于整数运算,不支持浮点数,进行浮点数运算需要使用bc命令
bc命令
jie@jix:~$ a=1.1
jie@jix:~$ b=2.2
jie@jix:~$ c=`echo "$a+$b"|bc`
jie@jix:~$ d=`echo "$a-$b"|bc`
jie@jix:~$ e=`echo "$a*$b"|bc`
jie@jix:~$ f=`echo "$a/$b"|bc`
jie@jix:~$ echo $c $d $e $f
3.3 -1.1 2.4 0
传入scale可以设定小数精度
jie@jix:~$ g=`echo "scale=2;$a*$b"|bc`
jie@jix:~$ echo $g
2.42
Shell脚本中$0、$?、$!等符号的意义
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如”$*”用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
$@
所有参数列表。如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。