首页
社区
课程
招聘
[原创]linux-shell编程[基础一把梭!]
发表于: 2021-7-9 19:34 11445

[原创]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 测试语句

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//