Shell初学者的入门知识

shell从文本里按行读取数据,并赋值给多个变量(ubuntu) 因为需要用ffmpeg处理一些图片,并且ffmpeg指令中的一些参数需要变化,所以就想着写一个shell脚本进行批处理。虽然代码并没有几行,但是却耗费楼主数小时才搞定,因此记录下该脚本以帮助有相同需求且没有经验的小伙伴。 先说明下楼主的数据格式:文本中每行有三个数据,它们分别用‘,’号分割 例如: 3,4,5 6,7,9 现在着重讲几个代码中用到的参数。 1、for是用来按行读取文本中的内容 2、line代表每行的内容 3、awk是将每行内容进行分段(分割),-F‘,’代表数据按照,进行分段 4、m=$(e 阅读详情

1.建立和运行shell程序
  什么是shell程序呢? 简单的说shell程序就是一个包含若干行
shell或者linux命令的文件.
象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.
在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整
的程序文件.
  执行shell程序文件有三种方法
  (1)#chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样)
  (2)#sh file
  (3)# . file
  (4)#source file 
在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .
2.shell中的变量
  (1)常用系统变量
     $ #        :保存程序命令行参数的数目
     $ ?        :保存前一个命令的返回码
     $ 0        :保存程序名
     $ *        :以("$1 $2...")的形式保存所有输入的命令行参数
     $ @        :以("$1""$2"...)的形式保存所有输入的命令行参数
  (2)定义变量
   shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一
个变量赋值,实际上就是定义了变量.
   在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值.
如:
  abc=9  (bash/pdksh不能在等号两侧留下空格 )
  set abc = 9 (tcsh/csh)
   由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放
整数.
如:
  name=abc  (bash/pdksh)
  set name = abc (tcsh)
  在变量赋值之后,只需在变量前面加一个$去引用.
如:
  echo $abc
  (3)位置变量
  当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.
其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留
这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.

3.shell中引号的使用方法
  shell使用引号(单引号/双引号)和反斜线("/")用于向shell解释器屏蔽一些特殊字符.
反引号(")对shell则有特殊意义.
如:
 abc="how are you"  (bash/pdksh)
  set abc = "how are you"  (tcsh)
这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.
  abc1='@LOGNAME,how are you!' (bash/pdksh)
  set abc1='$LOGNAME,how are you!' (tcsh)
  abc2="$LOGNAME,how are you!" (bash/pdksh)
  set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,
abc1的内容是:$LOGNAME, how are you!.而abc2的内容是;wang, how are you!.
象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽
一组字符.
反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将
一个命令的运行结果传递给另外一个命令.
如:
  contents=`ls` (bash/pdksh)
  set contents = `ls` (tcsh)
4.shell程序中的test命令
  在bash/pdksh中,命令test用于计算一个条件表达式的值.他们经常在条件语句和循环
语句中被用来判断某些条件是否满足.
test命令的语法格式:
  test expression
  或者
  [expression]

在test命令中,可以使用很多shell的内部操作符.这些操作符介绍如下:
(1)字符串操作符  用于计算字符串表达式
  test命令    |    含义
  -----------------------------------------
  Str1 = str2 | 当str1与str2相同时,返回True
  Str1! = str2| 当str1与str2不同时,返回True
     Str      | 当str不是空字符时,返回True
    -n str    | 当str的长度大于0时,返回True
    -z str    | 当str的长度是0时,返回True
  -----------------------------------------
  (2)整数操作符具有和字符操作符类似的功能.只是他们的操作是针对整数
  test表达式   |    含义
  ---------------------------------------------
  Int1 -eq int2|当int1等于int2时,返回True
  Int1 -ge int2|当int1大于/等于int2时,返回True
  Int1 -le int2|当int1小于/等于int2时,返回True
  Int1 -gt int2|当int1大于int2时,返回True
  Int1 -ne int2|当int1不等于int2时,返回True
  -----------------------------------------
  (3)用于文件操作的操作符,他们能检查:文件是否存在,文件类型等
  test表达式   |    含义
  ------------------------------------------------
  -d file      |当file是一个目录时,返回 True
  -f file      |当file是一个普通文件时,返回 True
  -r file      |当file是一个刻读文件时,返回 True
  -s file      |当file文件长度大于0时,返回 True
  -w file      |当file是一个可写文件时,返回 True
  -x file      |当file是一个可执行文件时,返回 True
  ------------------------------------------------
 (4)shell的逻辑操作符用于修饰/连接包含整数,字符串,文件操作符的表达式
  test表达式    |    含义
  ----------------------------------------------------------
  ! expr        |当expr的值是False时,返回True
  Expr1 -a expr2|当expr1,expr2值同为True时,返回True
  Expr1 -o expr2|当expr1,expr2的值至少有一个为True时,返回True
  -----------------------------------------------------------
注意:
tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh
支持的表达式于C中的表达式相同.通常使用在if和while命令中.
  tcsh表达式    |    含义
  -------------------------------------------------------
  Int1 <= int2  |当int1小于/等于int2时,返回True
  Int1 >= int2  |当int1大于/等于int2时,返回True
  Int1 < int2   |当int1小于int2时,返回True
  Int1 > int2   |当int1大于int2时,返回True
  Str1 == str2  |当str1与str2相同时,返回True
  Str1 != str2  |当str1与str2不同时,返回True
  -r file       |当file是一个可读文件时,返回True
  -w file       |当file是一个可写文件时,返回True
  -x file       |当file是一个可执行文件时,返回True
  -e file       |当file存在时,返回True
  -o file       |当file文件的所有者是当前用户时,返回True
  -z file       |当file长度为0时,返回True
  -f file       |当file是一个普通文件时,返回True
  -d file       |当file是一个目录时,返回True
  Exp1 || exp2  |当exp1和exp2的值至少一个为True时,返回True
  Exp1 && exp2  |当exp1和exp2的值同为True时,返回True
  ! exp         |当exp的值为False时,返回True

在QTableWidget中添加支持多选的QComboBox并显示 定义自定义表格项,主要用于显示复选框自定义的多选ComboBox类自定义委托类,用于表格中的多选ComboBox代码展示如下。 阅读详情

相关推荐

Android13配置selinux让system应用可读sys,proc,SN号

Android13预置的system应用,需要读/sys, /proc目录,读(SN)serial number号, 需要修改selinux配置,否则会报avc错.其修改方法会比Android11复杂一些.。

zmlovelx(帅得不敢出门 程序员群31843264) 2655

Shell基础

1.建立和运行shell程序  什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.  执行shell程序文件有三种方法  (1)#chmod +x file(在/e

waterborn的专栏 1037

AWS S3文件上传性能优化:Java SDK多线程与分段上传实战指南

本文详细介绍了如何通过Java SDK优化AWS S3文件上传性能,重点讲解多线程并发上传与分段上传(Multipart Upload)技术的实战应用。通过动态调整分段策略、线程池配置及内存优化技巧,可显著提升大文件上传效率,实测显示组合方案比单线程上传提速近5倍。文章还涵盖加密上传、断点续传等高级场景解决方案,并提供了完整的性能对比测试数据。

d6e7f8的博客 1017

linux脚本逐行读取并赋给变量,如何在Shell脚本中逐行读取文件

导读在这里,我们学习Shell脚本中的3种方法来逐行读取文件。方法一、使用输入重定向逐行读取文件的最简单方法是在while循环中使用输入重定向。为了演示,在此创建一个名为“ mycontent.txt”的文本文件,文件内容在下面:[root@localhost ~]# cat mycontent.txtThis is a sample fileWe are going through conten...

weixin_32824369的博客 788

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 809

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 980

shell使用命令替换语法将文档的输出保存到变量中

在这个例子中,-e选项用于启用转义序列。\n表示一个换行符。请注意,在使用echo -e命令时,

weixin_44770684的博客 839

LaTeX小白必看:TeX Live+TeXstudio保姆级安装教程(附清华镜像加速)

本文为LaTeX新手提供了一份详尽的TeX Live和TeXstudio安装指南。通过清华大学镜像站实现高速下载,并详细讲解了从下载、定制化安装到配置优化的每一步,帮助用户快速搭建稳定高效的本地LaTeX写作环境,轻松处理学术文档排版。

weixin_29214559的博客 415

Shell逐行读取文件内容并赋值变量

需求: 读取a.txt的内容,赋值给对应 b.txt ,最终打印出来 分析: 1、追行读取文件a.txt内容,例如: hh aw ss dd sw dd 2、将空格前后内容赋值给不同变量lable 和 Name b.txt文件内容如下: this is label ,name is Name 实现: #! /bin/bash while read line do cplable=`echo $line | awk -F " " '{print $1}'` #获取变量 cpName=`echo $

Ying_smile的博客 9099

Matlab实战:用Transformer+LSTM+SVM搞定股票价格预测(附完整代码)

本文介绍了一种基于Transformer、LSTM和SVM的混合建模方法,用于股票价格预测。该方法结合了Transformer的全局依赖捕捉能力、LSTM的时序特征提取优势以及SVM的非线性回归能力,有效应对金融时间序列的非平稳性和噪声问题。文章提供了完整的Matlab实现代码,并展示了混合模型在实盘测试中的优异表现,方向预测准确率达62%,最大回撤控制在3.2%以内。

milk8的博客 256

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 549

shell的初学者入门知识

shell判断文件,目录是否存在或者具有权限 0 推荐 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi ...

海鸥跟着拖网渔船飞行 154

C/C++ LMS算法详解及源码

LMS(Least Mean Squares)算法是一种自适应滤波器算法,用于估计一个系统的参数,以使输出信号与期望信号之间的均方误差最小化。LMS算法通过使用梯度下降的方法,逐步调整自适应滤波器的权值来优化滤波效果。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 3279

[转载]Shell脚本初学者的入门知识

1.建立和运行shell程序什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.执行shell程序文件有三种方法(1)#chmod +x file(在/etc/pro

csdboy的专栏 930

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Shell初学者的入门知识-变量

1.建立和运行shell程序  什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.  执行shell程序文件有三种方法  (1)#chmod +x file(在/e

代代代代代码 592

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【shell笔记】Linux Shell脚本编程入门知识点全面涵盖

本文是我对白树明老师shell课程笔记的总结,课程链接:https://www.bilibili.com/video/BV1j541157Sr?from=search&seid=9757674743771615780 一:shell是什么?生成shell脚本 shell是什么? 1 shell是一个程序,采用C语言编写,是用户和Linux内核沟通的桥梁。 2 shell脚本就是将完成一个任务的所有命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。它能实现很多功能:如输出:ech

weixin_44316581的博客 3309

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Shell编程入门

Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 什么是 Shell? Shell 编程的 Hello World Shell 变量 Shell 编程中的变量介绍 Shell 字符串入门 Shell 字符串常见操作 Shell 数组 Shell 基本运算符 算数运算符 关系运算符 逻辑运算符 布尔运算符 字符串运算符 文件相关运算符 shell流程...

dooduoaixuexi的博客 1061

Shell 编程入门

Shell 编程入门 原文来自github stars>63k的项目JavaGuide,欢迎小伙伴去支持原作者 Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 什么是 Shell? Shell 编程的 Hello World Shell 变量 Shell 编程中的变量介绍 Shell 字符串入门 Shell 字符串常见操作 Shell 数组 Sh...

夜空星稀的博客 226

【知识总结】Shell脚本编程入门

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:代码语言:javascript复制数组名=(值1 值2 ... 值n)例如:代码语言:javascript复制或者代码语言:javascript复制value0value1value2value3还可以单独定义数组的各个分量:代码语言:javascript复制可以不使用连续的下标,而且下标的范围没有限制。

yzx203007的博客 1036

学习shell脚本之前的基础知识

学习shell脚本之前的基础知识一个不错的shell 脚本教程 入门级

limanjihe的专栏 534

linux脚本入门,Linux Shell脚本教程(一):Shell入门

Linux Shell脚本教程(一):Shell入门一、Shell简介诸多类Unix操作系统的设计令人惊叹。即便是在数十年后的今天,Unix式的操作系统架构仍是有史以来最佳的设计之一。这种架构最重要的一个特性就是命令行界面或者shell。shell环境使得用户能与操作系统的核心功能进行交互。术语脚本更多涉及的便是这种环境。编写脚本通常使用某种基于解释器的编程语言。shell脚本本质上就是一些文本文...

weixin_39588432的博客 236

shell脚本基础知识(shell作用,shell变量、shell参数、shell编程规范)

shell脚本基础知识 一、shell脚本的概述 shell不是开发语言,是为了减轻工作量,将要执行的命令按照顺序保存到一个文件中,赋予该文件执行权限,也可以结合各种shell控制语句完成复杂的操作,我们称这个可执行的文件为shell脚本。大多时候应用在重复性操作,交互性任务,批量事务的处理,服务运行状态的监控,定时任务的执行等等。 【1】shell的作用 shell的作用是命令解释器,俗话而言是内核(只识别二进制)与用户(命令)之间的“翻译官”(把用户的命令翻译成二进制),只是负责解释命令行。 过程简述

zhang_yazhou的博客 676

Shell编程规范与变量:Shell概述、Shell脚本详解和执行

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell是一个特殊的应用程序,介于操作系统内核与用户之间,充当命令解释器的角色。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。Shell功能。

shyuu的博客 1701

shell基础知识(shell入门)二

1、shell简介 2、变量类型:事先确定数据的存储格式和长度 3、grep, egrep, fgrep 4、逻辑运算符 5、bash变量类型 6、条件判断 7、shell中进行算术运算: 8、文件测试 9、参数传递 一、shell简介 编译器,解释器 编程语言:机器语言、汇编语言、高级语言 静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 ...

angelxf520的博客 871
上一篇: synopsys parallel_case full_case
下一篇: 更新gvim tags
study16
博客等级 码龄18年 18粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值