shell命令基础位置参数

shell脚本命令集合,类似于操作系统中的批处理的方式,一句一句的运行shell命令

一、shell的分类

1、Bourne shell(sh)

,是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。

2、C-shell(csh)

是一种比Bourne shell更适于编程的shell ,它的语法与C 语言很相似。 Linux 为喜欢使用C shell的人提供了Tcsh 。Tcsh 是C shell的一个扩展版本。Tcsh 包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C 语言的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。

3、Bash

Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多 C shell 和 Korn shell 中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。

4、Korn shell

集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。Linux 系统提供了pdksh (ksh 的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序

二、shell脚本运行语法

sh 【脚本名】 参数   #运行脚本文件

可以将shell文件放入/bin目录,直接使用文件名(现在是命令)执行文件。
例如:在teshell文件中写入

ls -al
pwd
who

运行文件

sh teshell

结果

total 52
dr-xr-x---.  6 root root   252 Dec  6 19:02 .
dr-xr-xr-x. 17 root root   256 Nov 27 10:34 ..
-rw-------   1 root root  5876 Nov 29 14:59 .bash_history
-rw-r--r--.  1 root root    18 May 11  2019 .bash_logout
-rw-r--r--.  1 root root   176 May 11  2019 .bash_profile
-rw-r--r--.  1 root root   176 May 11  2019 .bashrc
drwx------   3 root root    17 Aug 24 14:34 .cache
-rw-r--r--   1 root root  2212 Nov 29 10:19 cal2020.txt
-rw-r--r--   1 root root 12288 Nov 29 11:12 .cal2020.txt.swp
-rw-r--r--.  1 root root   100 May 11  2019 .cshrc
drwxr-xr-x   6 root root    70 Nov 22 17:30 .esmtp_queue
drwxr-xr-x   2 root root    22 Aug 24 14:34 .pip
-rw-r--r--   1 root root   206 Oct 30 17:34 .pydistutils.cfg
drwx------   2 root root    29 Aug 24 06:34 .ssh
-rw-r--r--.  1 root root   129 May 11  2019 .tcshrc
-rw-r--r--   1 root root    15 Dec  6 19:02 teshell
/root
root     pts/0        2020-12-06 19:01 (182.106.212.136)

为文件添加运行权限

chmod a+x teshell

就可以直接运行文件

./teshell

如果放到/bin或者/usr/bin就可以直接使用命令

teshell

三、shell环境变量

shell的提示符分类
'$'第一提示符
''换行
'>'第二提示符
$ps1显示ps1变量的值
$提示符可被更改

1、环境变量的优先顺序

先读公共环境变量(/etc/profile),再读用户环境(/home/username/.bash_profile,username为登录的用户名)。环境变量一般大写,系统启动后自动加载。

(1)可写的环境变量

用户可以通过修改自己的启动文件".bash_profile"中的部分变量或所有变量值来钉子自己的运行环境
如:HOME,MAIL,PATH,PS1,PWD,TERM

(2)只读的shell环境变量

只读环境变量,特殊环境变量和位置参数,特殊的环境便来你给用户不能重新设置。

  • $0-9一共10个参数
  • $0 shell程序名
  • $* 所有命令行的参数值
  • $# 命令行参数总数
  • $$ 进程ID
  • $? 最后执行的一条命令的退出态返回0代表成功,非0代表失败
  • $! 在后台运行的最后一个进程的ID

在执行sh文件时传入位置参数
位置参数:在命令行传递给shell脚本的参数
输出位置参数
在文件ptest中存入以下内容

echo $1 $2 $3 $3 $5 $6 $7 $8 $9 $0

运行

sh ptest 1 2 3 4 5 6 7 8 9 10

结果

1 2 3 3 5 6 7 8 9 ptest

sh ptest -参数 #参数会传递给对应$0-9

echo $(($1/$2))
echo $1 $2 $0

也可以通过set在文件中设置参数
set 赋值传给$1 $2
set a b #在脚本文件中赋值,
$0代表文件本身程序名

超过9个参数使用shift命令 再执行一次命令 未带参数默认为1,shift 1,每次把位置参数左移一位
修改ptest的内容

echo $1 $2 $3 $3 $5 $6 $7 $8 $9 $0
shift 3
echo $1 $2 $3 $3 $5 $6 $7 $8 $9 $0
shift 4
echo $1 $2 $3 $3 $5 $6 $7 $8 $9 $0

运行文件

 sh ptest 1 2 3 4 5 6 7 8 9 10

结果:

1 2 3 3 5 6 7 8 9 ptest
4 5 6 6 8 9 10 ptest
8 9 10 10 ptest

shell变量赋值

变量名=值/字符串
使用变量名:$变量名
变量不需要声明

$name=wan #在加工本文件中添加
echo $name

如果变量有空格需要用双引号括起来
变量可迭代
A= B B = B B= BB=C C=hello #可以得到A=hello

变量值是长字符串,需要引用变量值用{}把变量括起来
dir=/home/user1/
echo ${dir}m1.c

变量释放
unset

通配符

(与正则表达式相似)
shell编程所用的特殊字符
反引号 pwd 使用命令pwd命令
ls n* 可以匹配所有的n开头的文件
ls *w 可以匹配w结尾的文件
ne? 问号可以匹配多个字符
?ne?

ls [sdeefgnx]e[tw] 
ls [a-zA-Z]tes[1-5]
ls [!2]*[25] #其中!表示非的意思

单引号 字符输出
双引号 字符输出

shell中命令执行顺序

顺序执行;
command 1;command2 #执行完1再执行2
逻辑与&&
command 1 && command2 #先执行1,1成功了再执行2
逻辑或||
command 1 || command2 #先执行1,1不成功了再执行2,1成功不运行2

注释,转义

注释符#
反斜线\ 转义字符

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
学习shell脚本的基础知识是理解和编写shell脚本的关键。首先,shell脚本是一种编程语言,可以在文本编辑器中编写,并通过脚本解释器来执行。在Linux系统中,常见的shell种类有Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)等\[1\]。默认情况下,登录后使用的shell程序一般是/bin/bash\[2\]。 在shell脚本中,可以使用不同的内部指令和运行环境,这取决于所使用的shell类型。例如,bash是基于GNU框架发展出的shell,提供了丰富的功能;tcsh整合了csh,并提供了增强版的功能;而nologin是一种特殊的shell,可以阻止用户登录主机\[2\]。 当执行一个shell脚本时,可以通过位置参数变量来获取命令行的参数信息。比如,执行命令"./myshell.sh 100 200",在myshell脚本中可以通过位置参数变量来获取参数信息\[3\]。 要学习shell脚本的基础知识,可以从以下几个方面入手: 1. 了解不同的shell类型和其特点,选择适合自己的shell作为学习和编写脚本的工具。 2. 学习shell脚本的基本语法,包括变量的定义和使用、条件判断、循环结构、函数定义等。 3. 熟悉常用的shell内部指令和运行环境,掌握它们的用法和功能。 4. 学习如何使用位置参数变量来获取命令行的参数信息。 通过学习这些基础知识,你将能够编写简单的shell脚本来完成一些常见的任务,并逐渐提升自己的脚本编程能力。 #### 引用[.reference_title] - *1* [shell脚本学习教程(全网最全教学)](https://blog.csdn.net/cxb14897/article/details/124951398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [shell脚本的基础知识](https://blog.csdn.net/qq_45547688/article/details/124559693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Shell编程入门学习](https://blog.csdn.net/hkdhkdhkd/article/details/115617476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈勇劲

你的鼓励实我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值