【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
相关推荐
シ風箏2 小时前
Milvus【部署 01】向量数据库Milvus在Linux环境下的在线+离线安装
linux·数据库·milvus·向量数据库·特征搜索
画饼校长2 小时前
【C++ Primer Plus学习记录】函数的基本知识
开发语言·c++·学习·visualstudio·软件工程
HC182580858323 小时前
成人职场商务英语学习柯桥外语学校|邮件中的“备注”用英语怎么说?
学习·职场和发展
svygh1233 小时前
小程序管理系统设计
学习·软件设计·系统设计·系统文档·设计文档
软泡芙3 小时前
【信息系统项目管理师】18年~23年案例概念型知识
大数据·运维·服务器
壹心分享4 小时前
启航IT世界:高考后假期的科技探索之旅
学习·程序人生·职场和发展·学习方法·高考·it学习·it领域
铁蛋Q6 小时前
linux和mysql基础指令
linux·运维·mysql
Canon_YK7 小时前
安全隔离上网的有效途径:沙箱
服务器·网络·安全·web安全·网络安全
skywalk81637 小时前
FreeBSD虚拟化解决之道:高效、安全、灵活的虚拟解决方案全览
运维·服务器·虚拟化·freebsd
sz66cm7 小时前
Linux内核 -- 多线程之kthread的使用
linux·内核