shell基础知识

shell简介

shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

shell脚本创建

shell脚本的首行与命名
“#!/bin/bash”:#!不是注释,是指定该shell使用哪个程序解释执行。虽然在Linux中,文件不区分后缀。但是shell脚本发后缀为".sh"(见名知意)

shell的权限
刚创建的shell脚本没有执行(x)的权限(但是使用"2.3.2"和"2.3.3"的方式可以执行),必须使用"chmod"为该脚本添加权限(添加执行权限后,脚本会变成绿色)。

shell的执行命令(3种)

输入脚本的绝对路径或相对路径,如

[root@localhost tmp]# /tmp/helloworld.sh
[root@localhost tmp]# ./helloworld.sh

bash或sh +脚本,如

[root@localhost tmp]# bash /tmp/helloworld.sh
[root@localhost tmp]# sh helloworld.sh

在脚本的路径前再加". " 或source,如

[root@localhost tmp]# source /tmp/helloWorld.sh
[root@localhost tmp]# . ./helloworld.sh

注:第一种和第二种会新开一个bash,不同bash中的变量无法共享

shell注释

单行注释:以“#”开头的行就是注释,会被解释器忽略。
多行注释:使用“:<<任意符号a 注释内容 a”

shell中的变量

在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或者双引号包括。
在使用变量时,要在变量前加上"$",并且可以使用echo命令来查看变量值。
自定义的变量,只能在当前的shell环境(即同一个bash中)内可以使用。

shell中的临时变量

临时变量是指在用户在当前登陆环境生效的变量。用户登陆系统后,直接在命令行上定义的环境变量便只能在当前的登陆环境(即当前的bash,如果出现创建了bash(即在当前命令行中输入"bash"),就不能使用)中使用。当退出系统后,环境变量将不能下次登陆时继续使用。使用"set"命令可以显示所以的变量,使用"unset 变量名"命令可以删除指定变量。
但是如果将变量定义在配置文件中,就是永久存在的,在每次启动系统时,会自动加载出来,因为配置文件中的变量使用了"export"关键字,并且"export"也可以提升临时变量的作用域(当前shell以及所有的子shell)。
"/etc/profile"文件中是变量对所有用户生效;而" H O M E n a m e / . b a s h p r o f i l e &quot; , 针 对 特 定 用 户 生 效 , HOME_name/.bash_profile&quot;,针对特定用户生效, HOMEname/.bashprofile"HOME_name为用户的宿主目录,当用户登陆系统后,首先继承/etc/profile文件中的定义,再应用$HOME/.bash_profile文件中的定义。

shell中变量的赋值

定义变量时赋值
“变量=值”(等号两侧不能有空格)

将一个命令的执行的结果赋值给一个变量
1.使用反引号(即"~"按键)
A=ls -la ,运行里面的命令,并把结果返回给变量A

2.使用" ( ) &quot; A = ()&quot; A= ()"A=(ls -la)

3.将一个变量赋值给另一个变量
A=$STR

4.变量叠加
a=123;b=" a &quot; 456 ; c = a&quot;456;c= a"456;c={a}789
b的结果为"123456",c的结果为"123789"。

shell中常见的几种区别

shell中双引号和单引号的区别
单引号里的内容会全部输出,而双引号里的内容会有变化,因为单引号会将所有特殊字符脱意。

shell中 ( ) 和 ()和 (){}的区别
$( )的用途和反引号``一样,用来表示优先执行的命令,echo ( l s a . t x t ) ; (ls a.txt); (lsa.txt){ } 就是取变量了 eg:echo ${PATH};
$((运算内容)) 适用于数值运算 ,echo $((3+1*4))

位置参数变量

“$n”:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 9 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第9个参数,十以上的参数需要用大括号包含,如 99,{10};由于shell文件名也是一个实参(特殊的实参,即在显示所有参数内容时,他不显示),所以“ 0 ” 就 表 示 接 受 要 执 行 的 文 件 名 ( 参 数 个 数 从 0 开 始 ) 。 &quot; 0”就表示接受要执行的文件名(参数个数从0开始)。 &quot; 00"*":代表命令行中所有的参数,当加上" “” “时,把所有的参数看成一个整体。以”$1 $2 … $n"的形式输出所有参数,当没有加" “” “时,以”$1" “ 2 &quot; … &quot; 2&quot; … &quot; 2""n” 的形式输出所有参数。
“$@”:代表命令行中的所有参数,始终把每个参数区分对待。以"$1" “ 2 &quot; … &quot; 2&quot; … &quot; 2""n” 的形式输出所有参数。
"KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲":代表命令行中所有参数的个数…# 的值减1,用于分别处理每个参数,移出去的参数不再可用。

预定义变量

? &quot; : 返 回 执 行 上 一 个 命 令 的 状 态 值 执 行 成 功 , 返 回 0 , 执 行 失 败 , 返 回 非 0 ( 具 体 数 字 由 命 令 决 定 ) 。 &quot; ? &quot;:返回执行上一个命令的状态值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定)。 &quot; ?"00" &quot; : 当 前 进 程 的 进 程 号 ( P I D ) , 即 当 前 脚 本 执 行 时 生 成 的 进 程 号 。 &quot; &quot;:当前进程的进程号(PID),即当前脚本执行时生成的进程号。 &quot; "PID"!”:后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程("&"表示在后台执行)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值