shell本身是一个命令解释器,介于操作系统的内核(kernel)态和用户态之间,可以执行系统调用及系统命令等,让用户以此来与操作系统实现互动。
目前,大部分Linux系统预设的shell都是bash。
老规矩 : # ! /bin/sh 指定解释器的位置 ,这样执行脚本,chmod +x xx.sh 就可以直接 ./xx.sh 了
(注意直接./ 运行,要先获得可执行权限)
/bin/sh hello_world.sh 或者 命令行直接运行,这脚本第一行指定的解释器,没就没用了
(# shell中只有单行注释)
shell 中的变量:
和Python等动态语言类似,Bash变量在使用时直接定义,如 aaa="sadfas"
注意变量,只能是 数字 、字母、 下划线 (数字不开头)组成。另外 = 两边不能有空格(会报错哦)
使用:$name 或者${name} (推荐,因为这样可以更好地,分割变量 )
readonly name ——》 设置 下面的语句只能读取,不能更改此变量
unset name ——》 删除此变量,只读时,不可删除
local 一般用于局部变量声明,多在在函数内部使用
shell 脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止 函数的参数自然是属于local 的,函数内优先使用local 定义的变量
shell 字符串 :
有 ' ' 单引号 和 " " 双引号 之分
单引号: 里面不能有单引号 ,用 \ 转义也不行
单引号:中对变量引用是无效的,单引号中的字符都会原样输出
双引号:里面可以有转义字符,可以有变量
字符串亦可以不用引号 (奇葩)
字符串长度 ${#name} 字符串切片 ${name:1:4} 截取第二个和第四个
字符串 拼接 :
str1=$name$url #中间不能有空格 (不加引号)
str2="$name $url" #如果被双引号包围,那么中间可以有空格
str3=$name": "$url #中间可以出现别的字符串 (这种写法容易出错哦)
str4="$name: $url" #这样写也可以
str5="${name}Script: ${url}index.html" #这个时候需要给变量名加上大括号 (最常见的写法了)
只有当变量是纯数字时,该变量才是“数字类型的”,否则就是字符串类型的。
后续 :
执行命令,可以直接写,如果拿到结果到变量存储,就要用:
xx=`....` 这种形式
函数传参 可以 直接 func a b c d # 然后函数里面用 $1 引用第一个参数 $2 (第二个参数,$0 是脚本名)
从键盘读入数据 :
read -p "提示文字" -n 6 (6 位长度 , 6位自动结束) -t 5 (限时5 s) -s password (隐藏输入内容) 最后一个password 相当于变量 ,可以在后面的语句中使用它
如 read -p "请输入用户名" name
echo " your name is ${name} "
read -p " 请输入密码 " -s password1
read -p " 请请确认密码 " -s password2
if [ password1 != password2 ]
then
echo "两次输入的密码不一致"
fi
获得 函数返回值:
$? 上一句命令的返回值,如果没有返回值,则不出错则,默认返回值为1
例如、echo "aa" 这个命令的返回值就是 "aa"
运算符 : 这个是重点啊,有缘再写吧
数学运算符 :
关系运算符:
布尔运算符:
逻辑运算符:
字符串运算符:
文件测试运算符:
https://www.cnblogs.com/include/archive/2011/12/09/2307905.html csdn shell 的 if 判断
https://blog.csdn.net/weixin_37569048/article/details/80039941 CSDN shell 脚本if判断多个条件
网友评论