Shell学习笔记

Shell入门

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,用户可以用Shell来启动,挂起,停止甚至编写一些程序。

脚本执行方式

在国内,BashShell脚本开头必须以 #!/bin/bash 开头 。下述文件命名为 hello.sh。

#!/bin/bash
echo "hello_world"

方式1:输入脚本的绝对路径或相对路径。说明:需要使用 chmod u+x 赋予 xxx.sh脚本权限,再能执行脚本。如 ./hello.sh 运行输出
方式2:sh xxx.sh。 说明:不需要赋予脚本 +x 权限,直接执行即可。
ps:去掉权限 chmod u-x xxx.sh

一、Shell变量

分类:系统变量 与 用户自定义变量
系统变量有 $HOME, $PWD, $SHELL, $USER等等, set命令可以显示当前shell中所有变量。

1.0 基本语法

  1. 定义变量 变量名=值
  2. 撤销变量 uset 变量名
  3. 声明静态变量: readOnly变量,注意,静态变量不能unset。
  4. 可将变量提升为全局环境变量,可供其他Shell程序使用。
    [注:
    1. 变量名可以由字母,数字,下划线组成,不能以数字开头
    2. 等号两侧不能有空格
    3. 变量名习惯大写
    4. 可以将命令的返回值赋给变量,但是需要用 反引号``将命令括起来。 如 A=date [这里运行里面的命令,并把结果返回给变量A] 也可写成 A=$(date )]

1.1 设置环境变量

基本语法
export 变量名=变量值 (将Shell变量输出为环境变量 )
source 配置文件 (让修改后的配置信息立即生效 ,如 source /etc/profile)
echo $变量名 (查询环境变量的值)

1.2 注释

  1. 单行注释 : #
  2. 多行注释 :[ 注: 至少占三行]
    :<<! 多行注释部分 !

1.3 位置参数变量

  1. $ n ( n代表数字, $0 代表命令本身,$1代表第一个参数, $2代表第二个参数,十以及以上的参数需要用到大括号包含,如 ${10} )
  2. $ * (这个变量代表命令行中的所有参数, $ *把所有参数看成一个整体 。且去掉命令本身 。要区别于$@ ,)
  3. $@ (代表命令行中所有的参数,不过 $@ 把每个参数区分对待,且去掉命令本身 )
  4. @# ( 代表命令行中所有参数的个数 )

1.4 预定义变量

介绍:Shell设计者实现已经定义好的变量,可以直接在Shell脚本中使用
基本语法:

  1. $$ (当前进程号PID)
  2. $! (后台运行的最后一个进程的进程号)
  3. $? (最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0 (具体是哪个数,由命令自己来决定 ),证明上一个命令执行不正确了 )

1.5 运算符

基本语法:

  1. $((运算式)) 或者 $[运算式] 或者 expr m + n 【即expresion表达式 】
  2. 注意 expresion表达式运算符之间要有空格,如果希望 expr的结果赋予某个变量,使用``反引号
  3. expr中需用到的特殊符号 expr * , / , % 【 乘,除,取余 】
#!/bin/bash
result1=$(((2+3)*4))
echo $result1

result2=$[(2+3)*4]
echo $result2

temp=`expr 2 + 3`
result3=`expr $temp \* 5 `
echo $result3

#注意 sum=$[$1+$2]
sum=$[$1+$2]
echo $sum

1.5 条件判断

判断语句:

  1. 比较字符串 =
  2. 整数比较 -lt 小于 -le 小于等于 -gt 大于 -ge 大于等于 -ne 不等于 【 中间要有空格 】
  3. 按文件权限来判断 -r 有读的权限, -w 有写的权限 , -x 有执行的权限
  4. 按文件类型进行判断 -f 文件存在且是一个常规文件 -e 文件存在 -d 文件存在且是一个目录

二、流程控制

2.0 if语句

语法:
if [ 条件判断式 ]
then
  代码
fi
或者,采用下列方式  >>>>>>>>>
if [ 条件判断式 ]
then
  代码
elif[ 条件判断式 ]
then
  代码
fi
	[>>>> 注:中括号与条件判断式之间必须有空格 ]


#!/bin/bash
if [ "okei" = "ok" ]
then
        echo "equal"
fi

if [ 23 -gt 10 ]
then
    echo "大于!"
fi

if [ -f /root/shellCode/idf.sh  ]
then
   echo "存在"
fi

2.1 case语句

case $变量名 in
"值1")
如果符合条件,就执行这里的代码
;;
"值2")
如果符合条件,就执行这里的代码
;;
*)
如果变量的值都不是以上的值,则执行这里的代码
;;
esac

# 例子:命令行执行脚本时,输入一个数字,然后程序输出对应的一个字符串。
#!/bin/bash
case $1 in
'1')
  echo "Monday"
;;
'2')
  echo "Wednesday"
;;
*)
  echo "oher"
;;
esac
           

2.2 循环控制

for 循环

for 变量 in 值1,值2,值3
do 
	代码
done
或者
for (( 初始值;循环控制条件;变量变化))
do 
	代码
done

# 循环求得 1到100的累加和
#!/bin/bash
sum=0
for(( i=1; i<=100; i++))
do
  sum=$[$sum+$i]
done
echo $sum




while 循环
while [ 条件判断式 ]
do
	程序
done

#!/bin/bash
sum=0
i=0
while [ $i -le $1 ]
do
  sum=$[$sum + $i]
  i=$[$i+1]
done
echo $sum




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值