SHELL基础
# 表示注释
set 列出所有的变量
'' 内容原封不动指定给了变量
"" 取消了空格的作用,特殊符号的含义保留
unset 删除变量
特殊变量:
$0 这个程序所有的参数
$n 这个程序的第n个参数值
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个后台程序的PID
$? 执行上一个指令的返回值
Read命令 从键盘读入数据,赋值给变量
expr命令 Shell变量的算术运算符,语法:expr 表达式。
如:expr 3 + 5 注意:运算符之间要有空格。
如:value='expr $c \* $b' \乘法需要
test 变量测试语句,语法:test 测试条件。测试范围:整数,字符串,条件
测试字符串:test $str1 == $str2
test $str1 !== $str2
test $str1 如果$str1不为空,则返回结果为真
test -n $str1 如果字符串长度不为零,则返回结果为真
test -z $str1 如果字符串长队为零,则返回结果为真
文件测试:test -d file 是否为目录
test -f file 是否为文件
test -x file 是否可执行
test -r file 是否可读
test -w file 是否可写
test -e file 是否存在
test -s file 是否大小为空,是否为空文件
说明:test -x file 简写为 [ -x file ]
整数测试:test int1 -eq init2
test int1 -ge init2 >=
test int1 -gt init2 >
test int1 -le init2 <=
test int1 -lt init2 <=
test int1 -ne init2 不等于
说明:也可以省略test写成 [ init1 -lt init2 ]
流程控制语句:
if 语句
语法:if 条件
then
语句
fi
说明:利用 ; 可放在一行
多个条件联合:
-a 或 && 逻辑与,都成立时,结果为真
-o 或 || 逻辑或,两个条件有一个成立,结果为真
#!/bin/bash
#例1 echo "if test" if [ -x /bin/ls ] ; then /bin/ls fi echo "=================" echo "if test" if [ -x /bin/ls ] then /bin/ls fi
以上信息来自如下教程:
https://edu.aliyun.com/lesson_155_1964?spm=5176.10731542.0.0.XOQNlG#_1964
将wndows中的脚本导入到linux系统后无法执行:打开时候正常,运行时候不正常
rpm -ivh /mnt/Packagets/dos2unix-3.1-37.el6.x86_64.rpm
dos2unix 脚本.sh
shift 参数左移指令,每执行一次,参数序列顺序左移一次,$#的值减1,用于分别处理每个参数,移出去一个参数
问题:计算参数之和
#!/bin/bash if [ $# -le 0 ] then echo "erro!:not enough parameters" exit 124 fi sum=0 while [ $# -gt 0 ] do sum='expr $sum + $1' shift done echo $sum
以上信息来自如下教程:
https://edu.aliyun.com/lesson_155_1970?spm=5176.10731542.0.0.eIImdE#_1970
shell函数: 把一个功能封装起来,使用时候直接调用函数名。这样的脚本好处:模块化,可读性强。
语法:
函数名()
{
命令序列
}
注:函数调用时,不带()
函数中的变量都是全局变量,没有局部变量
调用函数时,可以传递参数。在函数中用$1、$2来引用传递的参数
以上信息来自如下教程:
https://edu.aliyun.com/lesson_155_1971?spm=5176.10731542.0.0.yaeztV#_1971