【shell 学习一】shell执行方式以及变量(自定义变量、整数运算)定义

1.shell执行方式

javascript 复制代码
测试脚本
vim file1
echo 'hello 2024'
read -p '请输入' name
echao 'hh,$name'

执行1
bash file1

执行2
sh file1

执行3
. file1

执行4
source file1

1和2的方式,是子shell
3和4的方式,是本shell
bash是进入新的命令 这时候退出edit是退出这个新的命令 而不是退出系统


准备环境测试
cim bash.sh
#!/usr/bin/bash
cd /home
ls

一种执行方式测试
.bash.sh


2.变量

javascript 复制代码
定义变量:变量名=变量值

引用变量:$变量名  或 ${变量名}


查看变量: echo $变量名   或  echo "$变量名" 或者  echo ${变量名}
 "set"可以查看所有变量(包括自定义变量和环境变量)
 
 set  | grep  变量名    //查看变量 过滤
  set  | grep  name
 
取消变量:unset 变量名  删除变量
unset  变量名
unset  name

定义:
name="yqq"
$name //yqq

name=yqq

a=123
a="$a"456  或者  a=${a}456   //a=$a456 错误没有变量$a456
$a // 123456

错误定义:
变量名不能以数字开头
等号左右两侧不能有空格 
变量的值如果有空格,必须用引号包含

定义或引用变量时注意事项
""弱引用
''强引用  里面的变量会当成字符串处置
``优先执行的变量

2.1自定义变量

javascript 复制代码
示例1
编写测试主机在线的脚本,当主机在线提示在线,当主机不在线提示不在线。

vim ping.sh
ping -c 1 192.168.100.1  &>  /dev/null  && echo 192.168.100.1up
 ||  echo 192.168.100.2down
 
 chomd +x ping.sh  //授权
 
 bask ping.sh //  up 在线
 
&&和川是三目表达式
注释&&前面的命令成功。执行后面的命令
||前面的命令失败。执行后面的命令


完善脚本  ip设置为变量

vim  ping.sh
#!bin/bash
ip=192.168.100.1
ping -c 1 $ip &> /dev/null && echo "$ip up" || echo "$ip down"


完善脚本  ip为用户输入的变量
 vim ping.sh
 read -p "请输入你要测试的ip" ip
 ping -c 1 $ip &> /dev/null && echo "$ip up" || echo "$ip down"

2.2整数运算

javascript 复制代码
方法1:expr   +加  -减  \*乘(*是任意字符,使用\转义一下。) /除   %取余
expr  1 + 2   //3
num1=10
num2=10
expr $num1 + $num2  //20
expr $num1 - $num2  //0
expr $num1 \* $num2  //100

示例:运算学员的成绩总分
vim avg.sh
#!bin/bash
read -p "请输入第一门成绩"  num1
read -p "请输入第二门成绩" num2
echo  -n "总成绩"
expr  $num1 + $num2

chomd -x avg.sh




方法2:$(())
echo $(($num1+$num2))
echo $((5-3*2))
echo $((2**3)) //蜜  2的3次方

方法3:$[]
echo $[5+2]  + = * / %
echo $[5**2]

方法4: let
let sum=2+3;echo sum
相关推荐
ggaofeng16 小时前
linux中mount的本质是什么?自己如何实现一个伪文件系统
linux·mount·自己实现伪文件系统
敲上瘾16 小时前
Linux系统C++开发环境搭建工具(二)—— etcd 使用指南
linux·c++·etcd
派森先生16 小时前
sk08.【scikit-learn基础】--『监督学习』之K近邻算法
学习·scikit-learn·近邻算法
励志不掉头发的内向程序员16 小时前
【Linux系列】解码 Linux 内存地图:从虚拟到物理的寻宝之旅
linux·运维·服务器·开发语言·学习
Fuly102416 小时前
使用docker本地部署dify
运维·docker·容器
woshihonghonga17 小时前
停止Conda开机自动运行方法
linux·人工智能·conda
遇见火星20 小时前
Ubuntu Docker 容器化部署教程
linux·ubuntu·docker
谷歌开发者21 小时前
Web 开发指向标 | Chrome 开发者工具学习资源 (一)
前端·chrome·学习
ybb_ymm21 小时前
mysql8在linux下的默认规则修改
linux·运维·数据库·mysql
半梦半醒*1 天前
zabbix安装
linux·运维·前端·网络·zabbix