首页 > 代码库 > shell 知识

shell 知识

variable 是变量名$variable 是变量值  ${variable}unset 变量名  清除变量的值variable ? value / variable : ?value 对未赋值的 variable,显示系统错误信息variable:= value 对未赋值的 variable,把value 值赋给它variable :-value 对未赋值的 variable,把value 值赋给它,但不保存在其空间地址上只读变量,不能改值variable =valuereadonly variable妈的,变量赋值与之相关的,居然不让给有空格,真扯蛋变量默认是字符型的,所以如果要进行四则运行,则如下:a=number;let "a+=10"echo $adeclare -i 变量名把变量转为整形,其实当进行四则运算时,才会实现真正的转换declare -r 变量名把变量设置为只读变量是无类型的,是弱类型的,所以如果没有定义或为空的变量,默认为字符0/数字0列出所有的全局变量env声明一个为全局变量APPSPATH=/usr/local #声明一个变量export APPSPATH  # 声明为全局变量echo $APPSPATH清除环境变量unset APPSPATH其中PATH全局变量是记录了可执行的文件路径,每个路径是用冒号分开,如果要添加新的路径,可以用export PATH = "/新目录名":$PATH参数:($0表示脚本名,)$1....n 表示第几个参数$*/$@:表示所有的参数$#表示参数的总数$?表示是否有错误,无时则返回0,bash.sh内容如下:#!bash.shecho "the script name is $0"echo "the first paramter is $1"echo "the total paramters is $#"echo "the paramters are $@"echo "the paramters are $*"单引号,双引号单引号不解释变量,并且不会输出格式化的,如PHP中的源代码与浏览器的一样,双引号会解释其中的变量,并连格式化也一并输出变量在命令替换上有三种情况可以使用:$var/$(var)/`var` 其中`var`不格式化 $var 格式化 $(var)自定义变量中无法使用退出,查看是否上一步的操作是否有错误 echo $? 如果没有错误,则为 0num1=100num2=99$num1 -eq $num2 :如果相等,则 echo $? 为0$num1 -ge $num2 : 如果num1 >= num2,则echo $? 为0$num1 -gt $num2; 如果是 num1 > num2,则 echo $? 为0$num1 -le $num2, $num1 -lt $num2, $num1 -neq $num2 类似以上只适用于整数来说的,对于浮点数不行,有专门的函数可用以上还可以用 [ "$num1" -eq "$num2" ]来代替 test $num1 -eq$num2,方括号之间必须要有空格分格字符测试string:测试字符串 string 是否不为空,此字符不能用 [ "$string" ]-n string:测试字符串string是否不为空-z string:测试字符串 string是否为空string1=string2:测试两字符是否相等string1!=string2:测试两字符是否不相等测试文件test -d file 测试file 是否目录test -e file 测试file 是否存在test -f file 测试 file 是否为文件test -r file 测试file 是否是进程可读文件test -s file 测试file 的长度是否不为0test -w file 测试file 是否是进程可写文件test -x file 测试file 是否是进行可执行文件test -L file 测试file 是否符号化链接逻辑运算! expression 为非-a expression 为 and-o expression 为or条件判断if expressthen stringfi或者 if express;then stringfi可以嵌套if expressionthen   if express   then   else    ....   fielse...fi或者:if expressthen  ...elif expressionthen  ....elif expressionthen   ...else ...ficase 语法case "$var" invalue1)    ....;;value2)    ...;;..........*)    ........esacas:#!/bin/bashecho "input a number"read okcase "$ok" in1)    echo "1";;2)    echo "2";;*)    echo "0000"esac        exit status 可自定义,在文档中用 echo $?可测试其中的输出值

 

shell 知识