当前位置: 代码网 > 服务器>服务器>Linux > linux命令之sh的使用及说明

linux命令之sh的使用及说明

2026年01月25日 Linux 我要评论
shell简介sh命令就是shell而我们知道shell的作用是什么?shell就是用来解释linux命令的,我们输入命令,指示linux帮我们做什么,而linux本身是看不懂我们输入的命令的,它只认

shell简介

sh命令就是shell

而我们知道shell的作用是什么?shell就是用来解释linux命令的,我们输入命令,指示linux帮我们做什么,而linux本身是看不懂我们输入的命令的,它只认识01,而事实显然不是如此, 那么在用户和linux之间必然有个桥梁起到了转换的作用,这里的桥梁就是shell。

shell有很多种,常见的如

bourne shell (sh)、c shell (csh) 和 korn shell (ksh)。

bourne shell 是 unix 最初使用的 shell,简称sh。

linux 操作系统缺省的 shell 是bourne again shell,一看什么区别?

多了个again,即简称 bash。但是有的同学可能会问,我平常在linux用到的sh命令或者在shell脚本第一行写的“#!/bin/sh”都是指的bourne shell吗,不是的。为什么呢?

看到了吧,linux中默认把/bin/sh 指向了/bin/bash,所以我们平常用的就是/bin/bash。至于sh和bash什么区别,顾名思义的来解释,多了个again嘛,其实事实也是如此,bash扩展了sh,并继承吸收了csh和ksh的优点,知道这么多就够了。

说了那么多,来看看sh命令吧

格式 :sh [选项] 命令字符串或者shell脚本

常见选项:

  • -c:command后面跟一个字符串,这个字符串可以是我们平常执行的任何命令,有参数选项时一定要用引号括起来
  • -x:后面跟shell脚本,可以详细的显示shell脚本的执行信息

看下面的例子

sh -c "ls -l"等价于 ls -l:

比如,现在我有个job.sh,实现的功能是每个一秒钟输出一句话,共输出十次,内容如下:

i=0
while [ $i -lt 10 ]
do
 echo "现在i的值是:"$i
 i=$(($i+1))
 sleep 1
done

当我执行命令“sh -x job.sh”来调试执行的时候输出什么信息呢?如下:

+ i=0
+ '[' 0 -lt 10 ']'
+ echo $'\347\216\260\345\234\250i\347\232\204\345\200\274\346\230\257\357\274\2320'
现在i的值是:0
+ i=1
+ sleep 1
+ '[' 1 -lt 10 ']'
+ echo $'\347\216\260\345\234\250i\347\232\204\345\200\274\346\230\257\357\274\2321'
现在i的值是:1

我这里没有全部粘贴过来,下面都是一样的了,我就不粘贴了,以"+"开头的就是调试的详细信息了,通过给sh命令知道-x选项,可以方便我们排查错误信息。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com