当前位置:首页 » 编程软件 » shell脚本ne

shell脚本ne

发布时间: 2023-09-19 01:39:46

⑴ 下面的linux shell脚本中的 $#和-ne是什马意思吗求指教。

$# 表示运行脚本时所带的参数数目,不含脚本文件名自身。
这里的 "Usage: $0 match_text filename" 也说明了运行此脚本需要跟两个参数。

-ne 表示 not equal,即 不相等。
也就是说,脚本参数不等于2,就提示正确的使用方法并用exit 1退出脚本执行。

⑵ 如何创建一个shell脚本检查命令行参数个数,如果参数不是三个显示一条错误信息,为三个则显示参数

1、“shell”中有一个特殊变量“$#”:表示包含参数的个数;

2、“if [ $# -ne 3 ] ; then # ”:如果参数不为3个

3、输入“if [ $# -ne 3 ];then echo errorelse echo "$1 $2 $3"if”

⑶ shell脚本解答

错误:
1. 需要用 test 命令或 [ ] 来测试文件是否可访问并可读。
2. 判断逻辑错误,if 与 else 里的内容颠倒。
3. $#表示参数个数,取第一个参数应该用$1。
4. $1最好用""包含起来,以防文件路径或文件名中有空格。

修改如下:

#!/bin/sh
if [ -r "$1" ]
then
cat "$1"
else
echo "File $1 does not exist or is not readable."
exit 1
fi

exit 0

另外,建议在脚本开头加上对参数个数的判断(如下)。

if [ $# -ne 1 ]
then
echo "Error: You MUST input one parameter!"
echo "Usage: $0 {fileName}"
exit 1
fi

因为按照你的表达,只应该有一个参数,就是文件名(文件全路径)。如果参数个数不是1,需要报错并提示正确的用法。

⑷ shell定义带参数的函数

1,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表 2,shell函数内同样是用$0、$1、$2等变量来提取参数 3,Shell脚本中的函数必须先定义后调用,也就是定义必须在调用的前面 这也是由于是解释语言的原因 4,return后面跟一个数字则表示函数的Exit Status#! /bin/sh#如果 传参是文件名 不是文件夹名称 那么返回#没有形参列表 ()is_directory(){ DIR_NAME=$1 if [ ! -d $DIR_NAME ]; then return 1 else return 0 fi}for DIR in "$@"; do #给函数传参 if is_directory "$DIR" then : else echo "$DIR doesn't exist. Creating it now..." #如果创建文件失败 错误信息打印到 /dev/null # 2 文件描述符 错误信息stderr, 1 文件描述符 输出信息stdout, 0文件描述符 键盘输入 stdin # 2>&1 也就是将错误信息输出到 /dev/null 别再给我打印出来了 mkdir $DIR > /dev/null 2>&1 if [ $? -ne 0 ]; then # -ne 不等于 echo "Cannot create directory $DIR" exit 1 fi fidone

⑸ shell脚本书写方法

在shell学习过程中,感觉挺有用的一份比较,略整理分享给大家。

首先,shell的作用

用户的登陆shell 登陆后默认的shell程序是: /bin/bash

不同的shell内部指令,运行环境会有所区别

常见的shell有

/bin/sh

/bin/bash

/sbin/nologin

1.编写脚本代码:

使用vi编辑器,每行一条Linux命令,按照顺序执行

2.然后赋予脚本文件可执行的属性

3.执行脚本文件的三种方法

./chao.sh

sh /chao.sh

source /chao.sh

更完善的脚本构成

注释信息

可执行语句

重定向操作

类型 操作符 用途

重定向输入 < 从指定文件读取而不是从键盘输入

重定向输出 > 将输出文件保存到指定文件(覆盖原有内容)

>> 将输出文件保存到指定文件(覆盖原有内容)

标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)

2>> 将错误信息保存到指定的文件

混合输出 &> 将标准输出,标准错误的内容保存到同一文件中

管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象

shell变量的作用

为灵活管理Linux系统提供的特定参数,有两层意思

变量名:使用固定的名称,由系统预设或用户定义

变量值: 能够根据用户设置,系统环境的变化而变化

变量的类型

自定义变量:由用户自己定义,修改和使用

环境变量: 由系统维护,用于设置工作环境

位置变量: 通过命令行给脚本程序传递参数

预定义变量:BASH中内置的一类变量,不能直接修改

定义一个新的变量

格式: 变量名=变量值

变量名以字母或下划线开头,区分大小写,建议全大写

查看变量的值: echo $变量名

赋值时使用引号:

双引号:允许使用$符引用其他变量值

单引号: 禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果

将键盘输入内容为变量赋值

格式: read [-p "提示信息"] 变量名

设置变量的作用范围

export 变量名

export 变量名=变量值

两种格式可以混合使用

整数变量的运算:

expr 变量1 运算符 变量2 [运算符 变量3]

常见的运算符

加法运算符 +

减法运算符: -

乘法运算符:\*

除法运算符: /

取余运算:%

整数变量的运算(2)

((变量=变量运算符变量));

等号后面的变量可以是具体数值

例子:

((a=a+3));

环境变量:

由系统提前创建,用来设置用户的工作环境

配置文件: /etc/profile ~/.bash_profile

常见环境变量的举例

位置变量:

表示为$n, n为1~9之间的数字

预定义变量:

/etc/passwd /etc/shadow

例如一些服务的内置用户名或密码

如apache的启动用户就是预定义变量

条件测试操作

测试特定的 表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式 : test 条件表达式

应用实例:

test -z 进行测试的时候 字符串长度为0的时候 结果才返回1

如果变量数值为0 返回0

条件测试操作

[ 操作符 文件或目录]

[5] 部分是判断表达式,-d表示判断是否是目录

&&是”逻辑与“操作符,只有&&前面的判断成立,后面的语句才会执行

-b的意思是判断 后面的路径是否是一个目录

echo $? 表示对刚刚执行的表达式进行判断

0表示成立,1表示不成立

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]

-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]

-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]

-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]

-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]

-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string长度为零,则为真 [ -z "$myvar" ]

-n string 如果 string长度非零,则为真 [ -n "$myvar" ]

string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]

string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]

算术比较运算符

num1-eq num2 等于 [ 3 -eq $mynum ]

num1-ne num2 不等于 [ 3 -ne $mynum ]

num1-lt num2 小于 [ 3 -lt $mynum ]

num1-le num2 小于或等于 [ 3 -le $mynum ]

num1-gt num2 大于 [ 3 -gt $mynum ]

num1-ge num2 大于或等于 [ 3 -ge $mynum ]

整数值比较

格式: [ 整数1 操作符 整数2 ]

字符串比较

格式1: [ 字符串1 = 字符串2 ]

[ 字符串1 != 字符串2 ]

格式2: [ -z 字符串 ]

逻辑测试:

格式1: [ 表达式1 ] 操作符 [ 表达式2 ]

格式2: 命令1 操作符 命令2

if语句的结构

while语句的语法结构

热点内容
压缩文件算法 发布:2024-11-19 03:37:48 浏览:449
舒肤佳解压 发布:2024-11-19 03:37:45 浏览:594
优酷播放器上传视频 发布:2024-11-19 03:29:58 浏览:421
口红机源码 发布:2024-11-19 03:29:57 浏览:855
安卓快充设置在哪里 发布:2024-11-19 03:24:17 浏览:611
delphi源码加密 发布:2024-11-19 03:24:07 浏览:809
分解压符号 发布:2024-11-19 03:24:04 浏览:251
苹果桌面文件夹命名 发布:2024-11-19 03:22:01 浏览:513
服务器ess更换系统ip会变吗 发布:2024-11-19 03:21:09 浏览:792
ssh系统源码下载 发布:2024-11-19 03:11:23 浏览:71