公司向要做一个网站要怎么做,常用的搜索引擎,深圳互联网公司排行榜100,安徽省建设项目 备案网站目录
前言
一、变量
1.定义变量
2.使用变量
3.修改变量
4.将命令的结果赋值给变量
5.只读变量
6.删除变量
二、传递参数
三、字符串
1.字符串举例
2.统计字符串长度
3.字符串拼接
4.截取字符串
总结 前言
Shell是一种程序设计语言。作为命令语言#xff0c;它…目录
前言
一、变量
1.定义变量
2.使用变量
3.修改变量
4.将命令的结果赋值给变量
5.只读变量
6.删除变量
二、传递参数
三、字符串
1.字符串举例
2.统计字符串长度
3.字符串拼接
4.截取字符串
总结 前言
Shell是一种程序设计语言。作为命令语言它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令作为程序设计语言它定义了各种变量和参数并提供了许多在高级语言中才具有的控制结构包括循环和分支。Shell 是一个用 C 语言编写的程序它是用户使用 Linux 的桥梁。Shell 既是一种命令语言又是一种程序设计语言。 一、变量
1.定义变量
Shell 支持以下三种定义变量的方式 variablevaluevariablevaluevariablevalue
注意赋值号的周围不能有空格这可能和你熟悉的大部分编程语言都不一样。
运行文件之前记得保存 ctrl s 快捷保存
Shell 变量的命名规范和大部分编程语言都一样 变量名由数字、字母、下划线组成必须以字母或者下划线开头不能使用 Shell 里的关键字通过 help 命令可以查看保留关键字。
举例.sh文件的开头必须是 #!/bin/sh 或者 #!/bin/bash 这是为了告诉操作系统使用该解释器
#!/bin/shahello world
bhelloworld
chello world2.使用变量
使用一个定义过的变量只要在变量名前面加美元符号$即可变量名外面的花括号{ }是可选的加不加都行加花括号是为了帮助解释器识别变量的边界当变量与其他字符相连时应使用花括号
#!/bin/shajavaecho $a # echo 打印 相当于python里的print
echo ${a}echo Can you use ${a}web 3.修改变量
已定义的变量可以被重新赋值
#!/bin/bash$bjava
bjava # 正确更改变量 直接 变量名新值
echo ${b} is good 单引号和双引号的区别
#!/bin/bash# 单双引号的区别 单引号内任何符号都被识别为字符串 无法引用变量
# 引用变量时最好加个{} 提高代码可读性
echo hhhh ${b}
echo hhhh ${b}
echo hhhh ${b}
输出: 单引号引起来的全部被识别为字符串输出
hhhh
hhhh ${b}
hhhh 4.将命令的结果赋值给变量
vm里有不少命令都会输出结果 可以将结果赋值给变量进行使用
#!/bin/bash# 命令的使用
comm$(ps) # ps 查看当前存在的进程及其状态 通过$()将命令进行赋值
echo ${comm}
echo there is : $(pwd) # pwd 查看当前文件路径
echo there is : pwd # 优先运行$()和里的命令 将结果作为参数输出
输出
PID TTY TIME CMD 3450 pts/1 00:00:00 bash 4014 pts/1 00:00:00 sh 4015 pts/1 00:00:00 ps
there is : /root/shell_code
there is : /root/shell_code 5.只读变量
使用 readonly 命令 将变量定义为只读变量只读变量不可修改或删除
#!/bin/bash# readonly 只读变量 不能修改 也不能被删除ttabcd
echo ${tt}....readonly tt # 将tt变成只读变量
ttlsakdjflkj # 赋值不成功 行31: tt: 只读变量
echo ${tt}....
输出
abcd....
demo2.sh:行40: tt: 只读变量 # 因为尝试修改只读变量 所以报错 6.删除变量
使用 unset 命令删除变量变量被删除后不能再次使用unset 命令不能删除只读变量
#!/bin/shttabcd
readonly tt # 将tt变成只读变量# unset 删除变量
unset tt # 删除tt变量 第 34 行:unset: tt: 无法反设定: 只读 variable
echo ${tt}.lsjdflbpython
echo ${b} is good
unset b
echo ${b} is good # b变量被删除 但是引用不会报错 只是输出空
输出尝试删除只读变量 tt 会报错 删除失败 tt 仍可以使用普通变量 b 被删除后引用不会报错 只是输出空
demo2.sh: 第 47 行:unset: tt: 无法反设定: 只读 variable
abcd.lsjdfl
python is goodis good 二、传递参数
举例
#!/bin/sh# Shell脚本 脚本传参echo 运行的文件名为$0 # 这个脚本本身是第0个参数
echo 传递的第1个参数为$1
echo 传递的第2个参数为$2
echo 传递的第3个参数为$3
echo 传递的第4个参数为$4
echo 传递的第5个参数为$5
echo 传递的第6个参数为$6
echo 传递的第7个参数为$7
echo 传递的第8个参数为$8
echo 传递的第9个参数为$9
echo 传递的第10个参数为${10}
echo 传递的第11个参数为${11} # 假设在脚本运行时写了三个参数 1、2、3
echo $* # 则 * 等价于 1 2 3传递了一个参数
echo $ # 而 等价于 1 2 3传递了三个参数echo $# # $# 统计传入参数的总数 脚本名称是第0个参数
输出
[roottokyo001 shell_code]# sh demo3.sh 1 2 3 4 5 65 6 7 8 8 9
运行的文件名为demo3.sh
传递的第1个参数为1
传递的第2个参数为2
传递的第3个参数为3
传递的第4个参数为4
传递的第5个参数为5
传递的第6个参数为65
传递的第7个参数为6
传递的第8个参数为7
传递的第9个参数为8
传递的第10个参数为8
传递的第11个参数为9
1 2 3 4 5 65 6 7 8 8 9
1 2 3 4 5 65 6 7 8 8 9
11 参数处理说明一般只用 $# $ $* 三、字符串
1.字符串举例
#!/bin/shn74
str1www.aaa.com${n}
str2shell \script\ ${n} # 这里的被\转义
str3shell script $n # 单引号之内只存在字符串echo $n
echo $str1
echo $str2
echo $str3
输出可以看到单引号引起来的${n} 没有被引用变量而是直接输出说明单引号引起来的内容只会被认定成字符串输出。
74
www.aaa.com74
shell script 74
shell script $n 2.统计字符串长度
#!/bin/shn74
str1www.aaa.com${n}
str2shell \script\ ${n} # 这里的被\转义
str3shell script $n # 单引号之内只存在字符串#统计字符串中字符的个数
echo ${#n}
echo ${#str3} # 单引号中空格和符号也算
echo ${#str1} # 双引号中空格和符号都不算输出注意第二行与第三行的区别
2
17
13 3.字符串拼接
#!/bin/sh# 字符串的拼接
shellshell
urlwww.baidu.com
s1${shell}${url}# 两个变量之间加空格 需要用引号引起来
s2${shell} ${url} # 会报错
s3${shell} ${url}
s4${shell}:${url}
s5${shell}:${url}
echo $s1
echo $s2
echo $s3
echo $s4
echo $s5
输出注意空格的输出两个变量之间加空格需要用引号引起来否则会报错。
demo4.sh:行28: www.baidu.com: 未找到命令
shellwww.baidu.comshell www.baidu.com
shell:www.baidu.com
shell:www.baidu.com 4.截取字符串
#!/bin/sh# 截取字符串
urlhttps://blog.csdn.net/zhangfei5354/article/details/136298293# 从指定位置开始截取 ${string:start:length} 无法间隔着截取
echo ${url:0:10}
echo ${url:1} # 从起始位置开始截取全部
echo ${url:20:50} # 截取范围超过最大长度时 截取完就结束
echo ${url:0-5:10} # 从右边开始截取 但方向还是从左往右
echo ----------------------------# 从指定字符开始截取 ${string#*chars} 截取右边的字符
echo ${url#*blog} # 截取blog后面的内容
echo ${url#*/} # 匹配第一个遇到的/
echo ${url##*/} # 匹配最后一个/ 在这个字符串里也可以使用s/去精准匹配
echo ----------------------------# 截取左边的字符 ${string%chars*}
echo ${url%zhangfei*}
echo ${url%a*} # 匹配最右边的a左边的内容
echo ${url%%a*} # 匹配最左边的子串
输出注意不同起始位置截取时写法的不同以及截取左右方向的选择。
https://bl
ttps://blog.csdn.net/zhangfei5354/article/details/136298293
t/zhangfei5354/article/details/136298293
98293
----------------------------
.csdn.net/zhangfei5354/article/details/136298293
/blog.csdn.net/zhangfei5354/article/details/136298293
136298293
----------------------------
https://blog.csdn.net/
https://blog.csdn.net/zhangfei5354/article/det
https://blog.csdn.net/zh
截取操作汇总 总结
Shell编程与python大同小异与python对照着学习更容易理解。