新手上手shell

Linux Shell 脚本的基础

学习 Linux 不可避免的要遇到各种脚本 , 有时候也会需要将一些频繁使用的命令写在脚本里 ,下次再用到这些命令组合的时候 , 直接调用脚本完成 , 是偷懒的利器。

这篇文主要是记录 Shell 脚本基础 , 适合血统纯正的小白食用

Shell 是什么

Shell 是用户与 Linux 操作系统沟通的桥梁 , 用户既可以输入命令执行 , 又可以利用 Shell 脚本编程 , 完成更加复杂的操作。
简单来说 , 在 Linux 上输入的命令或者编写的脚本都是依靠 Shell 来执行。

Shell 基础

脚本的编写与执行

首先 , 先使用 touch 命令创建一个脚本文件。并打开该脚本文件。Shell 脚本的第一行必须是:

#!/bin/sh

用来指定解释此脚本文件的 Shell 程序。

当编写完脚本后 , 需要用

chmod +x file

命令 , 使文件可执行 , 再使用

./file

执行脚本即可。
那么 , 现在就写个 ‘Hello World’ 体验一下吧~

#!/bin/bash
#对变量赋值
hello='Hello World'
#打印变量的值
echo $hello

然后按照上面的方法 , 执行该脚本即可。

Shell 常用语法与命令

在脚本中 , 常用的是变量赋值 , Unix 命令和判断语句与循环语句。
1. 变量赋值
在上面编写打印 “Hello World” 的脚本中 , 已经使用到了变量赋值。

  hello='Hello World‘

这行语句就是把 Hello World 这个字符串赋值给变量名为 hello 的变量。
注意:在给变量赋值的时候 , 等号两边不能有空格。
通过 “$变量名” 可以取出变量的值。但有一种特殊情况 , 当取出来的变量需要和其他字符串组合。如:

num=2
echo "this is $numnd"

这时候执行文件并不会打印出

this is 2nd

而是打印

this is

这是因为 shell 回去搜寻名叫 numnd 的变量。但是这个变量是没有值的 , 因此打印出来的字符串变量部分就是空的。
这时候我们只需要将命令改成:

echo "this is ${num}nd

就可以了。

当脚本中需要获取输入的参数时 , 通过如下方式获取:

 $1 获取第一个参数
 $2 获取第二个参数
 ...

如:

#!/bin/bash
echo "the first argument is $1"
echo "the second argument is $2"

同时在执行脚本时 , 需要添加两个参数:

./file arguemnt1 argument2
  1. 常用命令
    最开始就说 , 学习 shell 脚本可以用来偷懒 , 当经常需要用到一些命令组合的时候 , 可以将这些命令写在脚本中 , 需要用到的时候 , 直接执行脚本即可。如:

      #!/bin/bash
      halt
      reboot
    

轻松实现 Linux 系统关机重启。
3. 判断语句与循环语句
- 判断语句

if 表达式, 如果条件为真, 则执行 then 后面的部分

if......;then
....
elif......'then
....
else
....
fi

通常使用 “[ ]” 来表示条件。如:

[ -f "filename"] :判断 filename 是否是文件
[ "$a" = "$b" ] 判断两个变量的值是否相等
...

举个例子 , 检查使用的 shell 是否 bash:

#!/bin/bash
if [ "$SHELL"="/bin/bash" ];then
    echo "your login shell is the bash"
else
    echo "your login shell is not the bash but $SHELL"
fi
  • 循环语句
    格式如下:

    for var in ....; do 
    .... 
    done
    

for 循环表达式查看一个字符串列表 (字符串用空格分隔) 然后将其赋给一个变量。如:

for I in a b c d
do
    #输出字符串列表
    echo " $I" 
done

到这里 , 一些基本操作已经完成了。接下来试一个简单的例子。

#!/bin/bash
OLD="$1"
NEW="$2"

for file in $3;
do 
    if [ -f "$file" ];then
            newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`

            if [ -f "$newfile" ];then
                    echo "ERROR: $newfile exists already"
            else
                    echo "renaming $file to $newfile"
                    mv "$file" "$newfile"
            fi
    fi
done

该脚本用于重命名文件 , 第七行 , 通过 sed 命令将文件名中指定字符替换生成一个新的文件名 , 最后通过 mv 命令重命名了文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值