广告
返回顶部
首页 > 资讯 > 服务器 >Shell常见用法小记
  • 141
分享到

Shell常见用法小记

小记常见Shell 2022-06-04 21:06:35 141人浏览 八月长安
摘要

shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方

shell的简单使用

最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方便以后随时回顾和查阅!

1. 综述

shebang

其实shell的开始并不难,第一行如下:

#!/bin/bash

叫做shebang

注释

shell的注释以#开头(这点类似于python

变量

变量定义:

var_test1="hello"

注意定义和赋值时=两边均不能有空格,且变量名前不能加$!

变量使用:

echo $var_test1

echo ${var_test1}

或:

str1="${var_test1} world"

加上美元符后的变量会被替换为其值。注意,单引号中的不会被替换

命令执行结果赋给一个变量:


lines=`wc -l 1.txt` # 这里lines就被赋值为了1.txt的行数

lines="$(wc -l 1.txt)" # 单撇号不能嵌套,可用这种包含在内

格式化变量:

echo 23 | awk {printf("%05d", $0);} # 00023

字符串截取:

${var_test1:1:3}会得到"ell",即从索引1开始取3个字符

输出

shell中的输出直接用echo即可

echo "hello Word"

等同于

echo hello word

输入:

echo "What's your name?" read Name # 这里不需要声明新变量 echo Hello, $Name!

多语句组合

&&: 满足短路原则,即第一个命令返回失败时不会执行第二个命令

||: 满足短路原则,即第一个命令返回成功时不会执行第二个命令

;: 不短路,不管第一个命令是否返回成功,均会执行第二个命令


echo "Always executed" || echo "Only executed if first command fails"
echo "Always executed" && echo "Only executed if first command does NOT fail"
echo "Always executed1" ; echo "Always executed2"

通道和重定向

cmd1 | cmd2: 通道,第一个命令的输出会直接作为第二个命令的标准输入来执行

Python test.py < in.txt: 输入重定向,将从in.txt读取输入而非标准输入流

echo "hello" > out.txt: 输出重定向,将前一个命令的输出定向到文件out.txt中(创建新文件并写入)

echo "hello" >> append.txt: 输出重定向,将前一个命令的输出定向到文件append.txt中(追加到文件末尾)

echo "hello" 2> err.txt: 错误流重定向,将前一个命令的错误流输出定向到文件err.txt中(创建新文件并写入)

echo "hello" 2>> err.txt: 错误流重定向,将前一个命令的错误流输出定向到文件err.txt中(追加到文件末尾)

2. 判断

最简单的判断逻辑是:


if [ condition1 ]; then
   statement1
elif [ condition2 ]; then
  statement2
else
  statement3
fi
# 或者用test
if test condition1 ; then
   statement1
fi

注意:condition两边与[]之间必须至少有一个空格

判断条件

shell中判断条件不同于其他语言中的<,>,==,<=,>=那么直接,常见的有下列几种:


-eq  等于(==)
-ne  不等于(!=)
-gt  大于(>)
-lt  小于(<)
-le  小于等于
-ge  大于等于
-z  空串
-n  非空串
==  两个字符相等
!=  两个字符不等

组合判断


-a   且
-o   或

特殊用法[[ ... ]]

字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]]结果为真
&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a <= 5 ]],如果不使用双括号, 则为if [ $a -ne 1] && [ $a -le 5 ]或者if [ $a -ne 1 -a $a -le 5 ]

文件的判断


-f   判断后面是否为一个文件
-d   判断后面是否为一个目录
-e   判断后面对应的文件是否存在
-s   判断文件是否存在且不为空

switch case


case "$Variable" in
  # 列出需要匹配的字符串
  0) echo "There is a zero.";;
  1) echo "There is a one.";;
  *) echo "It is not null.";;
esac

3. 循环

for 循环


# {1..3} == `seq 1 3`
for Variable in {1..3}
do
  echo "$Variable"
done

或传统的"for循环",但需要加两层括号(两层的小括号内可以写C语言中的语句):


for ((a=1; a <= 3; a++))
do
  echo $a
done

在其他命令的结果上执行for循环:


for Output in $(ls)
do
  cat "$Output"
done

while 循环


while [ condition ]
do
  echo "loop body here..."
  break
done

4. 命令行


$#   命令行参数个数
$0   当前脚本名
$n   第n个参数值,n可取1,2,3...
$@   所有命令行参数
$?   上一个命令的返回值

5. 其他常用命令


# 打印每行中 ',' 之前内容
cut -d ',' -f 1 file.txt
# 将 file.txt 文件所有 'okay' 替换为 'great', (兼容正则表达式)
sed -i 's/okay/great/g' file.txt
# shell中不支持浮点数除法运算,可使用awk实现浮点除法
a=3
b=4
c=`awk 'BEGIN{printf "%.2f",('$a'/'$b')}'` # 单引号内的变量不能被替换,因此需要将变量单独放在引号外

本文简要介绍了下shell入门的一些用法,如有不对之处,欢迎大家指正。我也是不久前才开始真正使用shell,这是个强大而又复杂的语言,大家有比较好的shell资料也欢迎留言,共同学习,谢谢!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程网!

--结束END--

本文标题: Shell常见用法小记

本文链接: https://www.lsjlt.com/news/18841.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell常见用法小记
    shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方...
    99+
    2022-06-04
    小记 常见 Shell
  • Shell常见用法有哪些
    这篇文章主要为大家展示了“Shell常见用法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell常见用法有哪些”这篇文章吧。shell的简单使用最近发现shell脚本在平常工作中简直算...
    99+
    2023-06-09
  • python常见运算符及用法小结
    目录算术运算符关系运算符逻辑运算符成员运算符身份运算符三目运算符运算符优先级算术运算符 运算符描述+两个数相加两个数相加,或是字符串连接-两个数相减*两个数相乘,或是返回一个重复若干...
    99+
    2022-11-11
  • Shell中if的基本语法和常见判断用法
    if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、数字...
    99+
    2022-06-04
    语法 常见 Shell
  • Python中plt.scatter()函数的常见用法小结
    目录plt.scatter()函数用法一.scatter()函数的定义二.scatter()函数的用法plt.scatter()函数用法 一.scatter()函数的定义 matpl...
    99+
    2023-05-15
    plt.scatter()函数用法 plt.scatter()函数 python plt.scatter()
  • Linux shell命令用法及常见用例之tar命令
    前言 tar命令用来归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用gzip或者bzip2等技术进行压缩。 命令格式 tar [OPTION...] [FILE]... 命令功能 Tar(Tap...
    99+
    2022-06-04
    linux shell tar shell tar 命令 linux压缩命令tar
  • Android应用UI开发中Fragment的常见用法小结
    1.Fragment概述 在一个Activity中, Fragment代表UI的一个部分或者一个行为。一个Activity可以结合多个Fragment对象,也可以在多个acti...
    99+
    2022-06-06
    小结 fragment Android
  • Webpack常见使用配置小结
    目录1. 简介2. 上手准备3. 安装3. 编写案列随着前端开发越来越复杂,那么我们需要做的功能也不止基本界面了, 比如开发过程中我们需要通过模块化的方式来开发;比如也会使用一些高级...
    99+
    2022-11-13
  • 常用Linux Shell进阶部分小结
    如何计算当前目录下的文件数和目录数 # ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc ...
    99+
    2022-06-04
    进阶 小结 常用
  • HBase Shell Get 操作常用小技巧
    在工作中,有时候只是想简单看下HBase表某些关键指标的值,这个时候总不能现写Java代码去查看,以下几个小技巧你可能会经常用到。 1. 某行有许多列,只想获取指定2~3列的数据 hbase> get "t1", "r1", ["...
    99+
    2017-03-26
    HBase Shell Get 操作常用小技巧
  • 【笔记】MyBatis 大于等于小于等于常用写法
    前言 经常在工作中使用mybatis范围筛选的时候忘记大于等于小于怎么写,这里做记录分享给有需要的人。不喜别喷 方法一:使用转义字符 含义原符号转义字符小于=>=逻辑与(和)&&单引号...
    99+
    2023-09-24
    mysql sql
  • MySQL无法启动几种常见问题小结
    昨天在群里看到有新同学还在问MySQL无法启动的问题,于是总结了几个常见情况,权当普及帖了,老鸟自觉飞过。 问题1:目录、文件权限设置不正确 MySQL的$datadir目录,及其下...
    99+
    2022-11-15
    MySQL无法启动
  • JVM的内存回收及常见算法小结
    什么样的对象应该被回收? 某个对象不再被栈直接或间接地引用,此时就应该被回收了。 o被指向null的时候,new Object()创建的对象就不在被栈引用了,可以被回收。 p1和...
    99+
    2023-05-18
    JVM内存回收
  • Shell 框架的 Java 学习笔记:如何应对常见的编程问题?
    Shell 是一种基于命令行的脚本语言,被广泛应用于 Linux 和 Unix 系统上。在 Shell 编程中,常常会遇到各种各样的问题。本文将介绍如何使用 Java 编写 Shell 脚本,并针对常见的编程问题给出解决方案。 一、如何在...
    99+
    2023-09-17
    学习笔记 shell 框架
  • Shell脚本数组用法小结
    array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈。 PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈。。。废话少说,说下正题 1、...
    99+
    2022-06-04
    数组 小结 脚本
  • shell中case的用法学习笔记
    shell中的case语句:可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码。 使用格式:case 匹配母板 in模板1 [ | 模板2 ] … ) 语句组 ;;模板3 [ ...
    99+
    2022-06-04
    学习笔记 shell case
  • c++ 中vector 常见用法
    目录1、c++ 中 vector2、初始化3、常用函数 1、c++ 中 vector vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capa...
    99+
    2022-11-12
  • Moment.js常见用法总结
    Moment.js是一个轻量级的js时间处理类库,其使用简单,方便了日常开发中对时间的操作,提高了开发效率。 引用Moment.js npm install moment 常用的方...
    99+
    2022-11-13
  • 优化Docker镜像大小常见方法有哪些
    本篇内容主要讲解“优化Docker镜像大小常见方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“优化Docker镜像大小常见方法有哪些”吧!手动管理我们能...
    99+
    2022-10-19
  • JavaScript数组合并的8种常见方法小结
    目录1.ES6 解构2.遍历添加3.concat4.join & split 5.解构添加6.splice解构7.apply8.call补充:两个数组的交叉合并总结...
    99+
    2022-11-16
    js数组合并的几种方法 js中数组合并 js多个数组合并成一个
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作