-
-
[原创]linux-shell编程[基础一把梭!]
-
发表于: 2021-7-9 19:34 11445
-
学习shell的时候,可以用vscode方便的运行修改shell,注意运行shell 的时候不需要F5
点击终端即可.
查看shell,修改shell
开始必须有#!/bin/bash
做shell脚本标识
0``:标准输入 /dev/stdin
1``:标准输出 /dev/stdout
(正确无误,有输出的状态2``:标准错误输出 /dev/stderr
(命令执行出现错误的状态
&:表示把标准输出和错误输出都保存到同一文件
管道操作符 | 连接进程,使不同的进程可以进行数据传递.
ps -aux|grep firefox
管道符|将命令与命令连接起来,用第2个命令来接收第1个命令的输出.
!变量和=号不能有空格
不要跟系统已有的环境变量名重名
其他的和c语言,变量定义规则相同
1.单引号包含
2.双引号包含
3.无空格,啥都没有
注意:在shell中,如条件为真,值为0.假为1.
它会把ls -l 显示的内容,将空格变为换行,打印显示
执行脚本输出:
makefile 文件名(相关,初学者略过即可)
% 号 代表任意字符
命令前加@ 表示无回显
$@ 表示目标文件
$^所有的依赖文件
ifeq 不能有tab
call 调用自定义参数 传参
-wall 表示忽略警告
vscode 快捷键操作
最后想请教一下大佬
vscode project generator这个插件,怎么用呀?
最后:感谢15pb教授本课的黄老师
感谢看雪论坛这个大家庭呀!
#!/bin/bash
# 第一行表示系统使用这个解释器执行
# 退出码可以用$?获取
# 脚本需要有执行权限 chmod 744 xxxx.sh
echo
"hello world"
exit
0
#!/bin/bash
# 第一行表示系统使用这个解释器执行
# 退出码可以用$?获取
# 脚本需要有执行权限 chmod 744 xxxx.sh
echo
"hello world"
exit
0
# 1 注释
# #表示单行注释
:<<!
我是多行注释
我是多行注释
我是多行注释
!
# 1 注释
# #表示单行注释
:<<!
我是多行注释
我是多行注释
我是多行注释
!
#!/bin/bash
# 02 变量定义,命名规则与C语言一样
name1
=
"hello 15pb"
# local必须在函数中
local name2
=
"hello world"
# 变量使用
echo $name1
#变量访问前加$
echo ${name2}
echo ${name1}
#变量访问前加${},数组必须使用这种方式<推荐
#!/bin/bash
# 02 变量定义,命名规则与C语言一样
name1
=
"hello 15pb"
# local必须在函数中
local name2
=
"hello world"
# 变量使用
echo $name1
#变量访问前加$
echo ${name2}
echo ${name1}
#变量访问前加${},数组必须使用这种方式<推荐
#!/bin/bash
# 字符串操作
var_name
=
"hello world"
# 字符长度
echo ${
#var_name} #在字符变量前加#
# 查找字符
echo `expr index
"$var_name"
w`
#!/bin/bash
# 字符串操作
var_name
=
"hello world"
# 字符长度
echo ${
#var_name} #在字符变量前加#
# 查找字符
echo `expr index
"$var_name"
w`
#!/bin/bash
var_name
=
"hello world"
# 字符截取 string:起始位置:截取长度
echo ${var_name:
6
:
4
}
echo ${var_name:
6
}
#从第6个字符开始到末尾
# string:从末尾位置开始(从右向左,数7个,从第7个开始,从左到右取4个字符):截取长度
echo ${var_name:
0
-
7
:
5
}
#!/bin/bash
var_name
=
"hello world"
# 字符截取 string:起始位置:截取长度
echo ${var_name:
6
:
4
}
echo ${var_name:
6
}
#从第6个字符开始到末尾
# string:从末尾位置开始(从右向左,数7个,从第7个开始,从左到右取4个字符):截取长度
echo ${var_name:
0
-
7
:
5
}
#!/bin/bash
# 04 数组
# 定义 使用空格隔开
arr1
=
(
1
2
3
4
5
6
)
# 修改
arr1[
0
]
=
99
arr1[
1
]
=
188
# # 访问
echo ${arr1[
0
]}
echo ${arr1[
1
]}
# # 访问所有数据
echo ${arr1[
*
]}
echo ${arr1[@]}
# # 数组长度
echo ${
#arr1[*]}
echo ${
#arr1[@]}
#!/bin/bash
# 04 数组
# 定义 使用空格隔开
arr1
=
(
1
2
3
4
5
6
)
# 修改
arr1[
0
]
=
99
arr1[
1
]
=
188
# # 访问
echo ${arr1[
0
]}
echo ${arr1[
1
]}
# # 访问所有数据
echo ${arr1[
*
]}
echo ${arr1[@]}
# # 数组长度
echo ${
#arr1[*]}
echo ${
#arr1[@]}
#!/bin/bash
# 04 数组
# 定义 使用空格隔开
arr1
=
(
1
2
3
4
5
6
)
# # 添加元素
arr1[${
#arr1[@]}]=88
echo ${arr1[@]}
#@号用于获取所有元素
arr1
=
(${arr1[@]}
99
111
222
)
echo ${arr1[@]}
#!/bin/bash
# 04 数组
# 定义 使用空格隔开
arr1
=
(
1
2
3
4
5
6
)
# # 添加元素
arr1[${
#arr1[@]}]=88
echo ${arr1[@]}
#@号用于获取所有元素
arr1
=
(${arr1[@]}
99
111
222
)
echo ${arr1[@]}
#!/bin/bash
# 06 参数变量 $n获取参数
# $0 脚本名称
# echo ${0}
# $n 脚本参数
echo
"参数0:${0}"
echo
"参数1:${1}"
echo
"参数2:${2}"
# 参数个素
echo
"参数个数是:$#"
#脚本运行的当前进程ID号
echo
"进程ID是$$"
#显示最后命令的退出状态 $? 0表示没有错误
echo
"退出状态:$?"
# 所有参数组合的字符串
echo
"$@"
#返回传递到程序中的所有参数
echo
"$*"
#返回传递到程序中的所有参数
#!/bin/bash
# 06 参数变量 $n获取参数
# $0 脚本名称
# echo ${0}
# $n 脚本参数
echo
"参数0:${0}"
echo
"参数1:${1}"
echo
"参数2:${2}"
# 参数个素
echo
"参数个数是:$#"
#脚本运行的当前进程ID号
echo
"进程ID是$$"
#显示最后命令的退出状态 $? 0表示没有错误
echo
"退出状态:$?"
# 所有参数组合的字符串
echo
"$@"
#返回传递到程序中的所有参数
echo
"$*"
#返回传递到程序中的所有参数
#!/bin/bash
# 07 环境变量
echo $HOME
#当前用户的家目录
echo $USER
#当前用户名称
echo $SHELL
#shell全路径名称
echo $RANDOM
#随机数
echo $PWD
#当前工作目录
#!/bin/bash
# 07 环境变量
echo $HOME
#当前用户的家目录
echo $USER
#当前用户名称
echo $SHELL
#shell全路径名称
echo $RANDOM
#随机数
echo $PWD
#当前工作目录
#!/bin/bash
# 08输入输出
echo
-
n
"输入用户名:"
read user_name
echo
-
n
"输入年龄:"
read user_age
# 格式化字符串
printf
"%s %d %s %d"
$user_name
15
"pb"
$user_age
#!/bin/bash
# 08输入输出
echo
-
n
"输入用户名:"
read user_name
echo
-
n
"输入年龄:"
read user_age
# 格式化字符串
printf
"%s %d %s %d"
$user_name
15
"pb"
$user_age
#!/bin/bash
# 09 算数运算
let a
=
9
+
7
echo $a
# 使用$(()) 缺点在""中无法运算
a
=
$((
9
*
7
))
echo $a
# 使用$[]可以在字符串运行
echo
"$[10*9]"
echo $[
10
*
9
]
#!/bin/bash
# 09 算数运算
let a
=
9
+
7
echo $a
# 使用$(()) 缺点在""中无法运算
a
=
$((
9
*
7
))
echo $a
# 使用$[]可以在字符串运行
echo
"$[10*9]"
echo $[
10
*
9
]
#!/bin/bash
# 10 测试语句 测试已存在的文件1myshell.sh,不存在文件my99.sh
# test [] [[]] #3种测试运算符
test
-
f
1myshell
.sh
#-f 检测文件是否为普通文件
echo $?
#文件存在为0 不存在为1
[
-
f
1myshell
.sh ]
echo $?
[[
-
f my99.sh ]]
echo $?
#!/bin/bash
# 10 测试语句 测试已存在的文件1myshell.sh,不存在文件my99.sh
# test [] [[]] #3种测试运算符
test
-
f
1myshell
.sh
#-f 检测文件是否为普通文件
echo $?
#文件存在为0 不存在为1
[
-
f
1myshell
.sh ]
echo $?
[[
-
f my99.sh ]]
echo $?
#!/bin/bash
# 10 测试语句
if
test
-
f main.c
then
echo
"文件存在"
else
echo
"文件不存在"
fi
#结尾标志,发现如if case 的结尾都是反着来的 fi esac 等
#使用or逻辑运算 -o ,1个位true返回true
if
[
-
f main.c1
-
o
-
f error.txt ]
then
echo
"文件存在"
else
echo
"文件不存在"
fi
#使用and运算,2个都为true才返回true
if
[
-
f main.c1
-
a
-
f error.txt ]
then
echo
"文件存在"
else
echo
"文件不存在"
fi
#!/bin/bash
# 10 测试语句
赞赏记录
参与人
雪币
留言
时间
一笑人间万事
为你点赞~
2022-7-30 07:19
wholedayML
为你点赞~
2022-2-23 19:53
钢针
为你点赞~
2021-7-10 11:05
r0Cat
为你点赞~
2021-7-10 10:47
赞赏
他的文章
- [分享]小米绑定解BLnts 4516
- [原创]提取Android apk app等 AndroidManifest.xml .so jar等文件通用脚本 5672
- [求助]PDD 那个大佬手机有相应的截图呀 12406
- [求助]sq小说过签名校验学习 8589
- [原创]高级APT木马逆向分析 13840
看原图
赞赏
雪币:
留言: