菜鸟学Linux 第018篇笔记 字符测试&&for循环&&脚本

简介:

菜鸟学Linux 第018篇笔记 字符测试&&for循环



字符测试:

== 测试字符串是否相等 等为真,不等为假

A=hello B=hi

[[ $A == $B ]]

!= 测试字符串是否不等 不等为真,等为假

A=hello B=hello

[[ $A == $B ]]

>

<

单目操作符

-n 测试字符串是否为空,空则真,不空则假。

-s 测试字符串是否不空,不空为真,空为假。


循环

for

while

until



for循环

for 变量 in 列表; do

循环体

done


e.g.  for I in 1 2 3 4 5 6 7 8 9 10; do

加法运算

done

如何生成列表

整数列表

{1..100} 1-100

seq  print a sequence of numbers

e.g. `seq 10`

   SYNOPSIS

   seq [OPTION]... LAST

   seq [OPTION]... FIRST LAST

   seq [OPTION]... FIRST INCREMENT(增量,步进) LAST


declare -i  声名变量为整数    

   


小练习

script1

测试一个用户的用户ID和基本组ID是否一致;

script2

传递一个字符给脚本,如果参数为Q则退出脚本,否则就显示用户的参数;

script3

传递三个参数给脚本,第一个为整数,第二个为算术运算符,第三个为整数,

将计算结果显示出来,要求保留两位小数,形如 ./calc.sh 5 / 2

script4

计算1..100的和

script5

向默认shell的bash的用户问声好,并显示该用户的家目录。

script6

给一个参数add则

添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加。

给一个参数del则

删除10个用户user1到user10,但要求只有用户存在的情况下才能删除。



key:

script1

#!/bin/bash

#

if [ `id -nu $1` == `id -ng $1` ]; then

  echo "Yi yang."

else

  echo "Bu yiyang."

fi

script2

#!/bin/bash

#

if [ $1 = 'Q' ];then                

  exit 5

else

   echo $1

fi

script3

#!/bin/bash

#

#echo "scale=2;$1$2$3;" | bc

bc <<< "scale=2;$1$2$3;"

script4

#!/bin/bash

#

declare -i SUM=0


for I in {1..100}; do

  let SUM=$[$SUM+$I]

done


echo "1 + 100 = $SUM"


script5

#!/bin/bash

#

declare -i S=0

for I in `grep "bash\>" /etc/passwd | cut -d: -f1`; do

let S=S+1

HOOOM=`grep "bash\>" /etc/passwd | cut -d: -f6 | head -n $S | tail -1`  

echo "hello, $I. your home directory is $HOOOM"

done

script6

#!/bin/bash

#


if [[ $1 = "add" ]];then 

  for I in `seq 10`; do

! id user$I &> /dev/null && useradd user$I

  done

  echo "The user1-10 is added."

elif [[ $1 = "del" ]];then

  for L in `seq 10`; do

id user$L &> /dev/null && userdel -r user$L

  done

  echo "Delete user1-10 is complete."

else 

  echo "No such parameter"

  exit 10

fi

编辑脚本错误总结:

1.if语句后边的条件一定要和if之间空一格;

2.字符测试时要双括号如[[ $1 == "abc" ]]

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1863903如需转载请自行联系原作者


Winthcloud

相关文章
|
22天前
|
安全 Linux 虚拟化
|
1月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
131 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
15天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
38 5
|
23天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
27天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
42 4
|
1月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
93 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
42 1
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
381 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
30 0
下一篇
无影云桌面