精华内容
下载资源
问答
  • shell 判断参数是否存在

    千次阅读 2014-10-14 11:18:05
    if [ -$# -lt 1 ]; then echo 没有命令行参数 fi if [ x"$parm" = x ]; then echo 参数parm不存在或者为空值 fi if [[ -z "$parm" ]]; then ...
    if [ $# -lt 1 ]; then 
        echo 没有命令行参数
    fi
    if [ x"$parm" = x ]; then
        echo 参数parm不存在或者为空值
    fi
    
    $# 表示提供到shell脚本或者函数的参数总数;
    $1 表示第一个参数。
    
     -ne 表示 不等于
    
    另外:
    整数比较
    -eq     等于,如:if ["$a" -eq "$b" ]
    -ne     不等于,如:if ["$a" -ne "$b" ]
    -gt     大于,如:if ["$a" -gt "$b" ]
    -ge    大于等于,如:if ["$a" -ge "$b" ]
    -lt      小于,如:if ["$a" -lt "$b" ]
    -le      小于等于,如:if ["$a" -le "$b" ]
    <  小于(需要双括号),如:(("$a" < "$b"))
    <=  小于等于(需要双括号),如:(("$a" <= "$b"))
    >  大于(需要双括号),如:(("$a" > "$b"))
    >=  大于等于(需要双括号),如:(("$a" >= "$b"))
    
    另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.

    展开全文
  • shell判断传入参数是否存在

    万次阅读 2017-02-17 02:46:37
    #!/bin/sh if [ x"$1" = x ]; then echo "no cmd param!" exit 1 fi ... ...
    #!/bin/sh
    if [ x"$1" = x ]; then 
        echo "no cmd param!"
        exit 1
    fi
    ... ...
    展开全文
  • 先给大家分享一篇关于shell判断一个变量是否为空方法总结内容 shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 代码如下: read -p “input a word :” word if [ ! -n “$...
  • 我有下面的剧本if ["$1" -gt"-1" ]then echo hifi我得到[: : integer expression expected如何首先检查输入参数1以查看它是否存在?它是:if [ $# -eq 0 ]thenecho"No arguments supplied"fi$#变量将告诉您脚本传递...

    我需要检查输入参数的存在性。我有下面的剧本

    if ["$1" -gt"-1" ]

    then echo hi

    fi

    我得到

    [: : integer expression expected

    如何首先检查输入参数1以查看它是否存在?

    它是:

    if [ $# -eq 0 ]

    then

    echo"No arguments supplied"

    fi

    $#变量将告诉您脚本传递的输入参数的数量。

    或者,您可以检查参数是否为空字符串或类似:

    if [ -z"$1" ]

    then

    echo"No argument supplied"

    fi

    -z开关将测试"$1"的扩展是否为空字符串。如果是空字符串,则执行正文。

    我喜欢这样做,用简洁的语法,仍然可以接受POSIX。[ -z"$1" ] && echo"No argument supplied"我更喜欢一个衬垫,因为它们对我来说比较容易;与使用if相比,检查出口值也更快。

    当脚本运行需要参数时,您可能希望在if块内的echos末尾添加一个exit 1。很明显,但值得注意的是完整性。

    虽然很少有用,但第一个参数可能被初始化,但却是空的;programname"" secondarg third。$#检查明确检查参数的数量。

    对于一个noob,特别是来自非脚本背景的人来说,提到这些东西的一些特性也是很重要的。你也可以提到,我们需要一个空间后,开幕和闭幕撑。否则事情就不起作用了。我自己就是一个编写脚本的noob(我来自C背景),并且发现这是一个困难的方法。只有当我决定复制整个"原样"的时候,事情才对我起作用。那时候我意识到我必须在开口支撑后和关闭支撑前留一个空间。

    对于可选的args if [ ! -z"$1" ]; then ...

    @重要的是,没有提到的原因是,在使用if语句的每个地方都必须提到它。那就太过分了。然而,像你这样的人这样的评论是非常好的,正如你所看到的,看起来你已经帮助了4个人来学习这个。

    我喜欢将错误信息回送到stderr:echo"No argument supplied">&2。

    @当然,这只是一个示范。

    我对这件事有点犹豫不决。请注意,后面[之前]的空格至关重要。如果[$-eq 0]不起作用,但如果[$-eq 0]起作用。

    你好!我正在检查传递给脚本的参数是否等于"var1"和"var2",因此我执行了流操作,但它不起作用:如果[[$1-ne'var1'$1-ne'var2']]则返回"bad argument"fi

    最好这样示范

    if [[ $# -eq 0 ]] ; then

    echo 'some message'

    exit 1

    fi

    如果参数太少,通常需要退出。

    这是已接受答案的副本,因此我认为应该删除它。

    不,它不是:这有你通常想要的exit 1,并且使用了[[ ]]测试,这(iirc)通常更合理。所以对于盲目复制粘贴代码的人来说,这是更好的答案。

    要了解更多关于[]和[]之间差异的信息,请参阅stackoverflow.com/questions/3427872/&hellip;

    我认为指向[[]]和出口1的指针是有用的。

    在某些情况下,您需要检查用户是否向脚本传递了参数,如果没有,则返回到默认值。就像下面的脚本:

    scale=${2:-1}

    emulator @$1 -scale $scale

    这里,如果用户没有将scale作为第二个参数传递,那么我默认使用-scale 1启动android模拟器。${varname:-word}是一个扩展运算符。还有其他扩展运营商:

    ${varname:=word}设置未定义的varname而不是返回word值;

    ${varname:?message},如果定义了varname且不为空,则返回varname,或者打印message并中止脚本(如第一个示例);

    ${varname:+word},仅当varname已定义且不为空时才返回word;否则返回空。

    上面的示例似乎使用了${varname?message}。额外的:是打字错误,还是改变了行为?

    eki,在本例中":"是一个内置命令和/bin/true的缩写。它表示一个基本上忽略所提供参数的"不做任何事情"命令。为了防止解释器尝试执行"$varname"的内容(您当然不希望这样做),在这个测试中是非常重要的。同样值得注意的是,您可以使用此方法测试任意多个变量。所有这些都带有特定的错误消息。即: ${1?"First argument is null"} ${2?"Please provide more than 1 argument"}。

    尝试:

    #!/bin/bash

    if ["$#" -eq "0" ]

    then

    echo"No arguments supplied"

    else

    echo"Hello world"

    fi

    为什么您需要对$#和0进行双报价?

    如果我们不使用像$和0这样的双引号就没问题了

    在窗户上,明格这是唯一的方法。

    这个答案为我刚写的剧本提供了很好的起点。谢谢你也给我看了else。

    @bash中的user13107双引号变量可防止全局化(即扩展文件名,如foo*)和分词(即如果值包含空格,则拆分内容)。在这种情况下,没有必要引用$#,因为这两种情况都不适用。引用0也是不必要的,但有些人更喜欢引用值,因为它们实际上是字符串,这使得它更加明确。

    另一种检测参数是否传递到脚本的方法:

    ((!$#)) && echo No arguments supplied!

    注意,(( expr ))使表达式按照shell算法的规则进行计算。

    为了在没有任何论据的情况下退出,可以说:

    ((!$#)) && echo No arguments supplied! && exit 1

    另一种(类似的)方法是:

    let $# || echo No arguments supplied

    let $# || { echo No arguments supplied; exit 1; }  # Exit if no arguments!

    help let说:

    let: let arg [arg ...]

    Evaluate arithmetic expressions.

    ...

    Exit Status:

    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.

    -1如果验证参数的存在,这可能是最糟糕的方法。另外,它可以触发历史替换,并可能做坏事。

    我使用的不是杀死我的zsh进程的exit,而是不杀死它的return。

    我经常将这段代码用于简单的脚本:

    #!/bin/bash

    if [ -z"$1" ]; then

    echo -e"

    Please call '$0 ' to run this command!

    "

    exit 1

    fi

    所以,这是用来在你只需要一个论点?

    只是因为有更多的基点需要指出,我要补充一点,您可以简单地测试您的字符串是否为空:

    if ["$1" ]; then

    echo yes

    else

    echo no

    fi

    同样,如果您期望arg计数,只需测试最后一个:

    if ["$3" ]; then

    echo has args correct or not

    else

    echo fixme

    fi

    对于任何arg或var等等

    如果要检查参数是否存在,可以检查参数的是否大于或等于目标参数号。

    下面的脚本演示了这是如何工作的试验室

    #!/usr/bin/env bash

    if [ $# -ge 3 ]

    then

    echo script has at least 3 arguments

    fi

    生成以下输出

    $ ./test.sh

    ~

    $ ./test.sh 1

    ~

    $ ./test.sh 1 2

    ~

    $ ./test.sh 1 2 3

    script has at least 3 arguments

    $ ./test.sh 1 2 3 4

    script has at least 3 arguments

    作为一个小提示,bash中的数值测试操作符只对整数(-eq、-lt、-ge等)起作用。

    我想确保我的$vars

    var=$(( var + 0 ))

    在测试它们之前,只是为了防御"[:integer arg required"错误。

    技巧很巧妙,但请注意:由于bash无法处理算术中的浮点,此方法可能导致语法错误并返回非零,这将成为启用errexit的障碍。var=$(printf"%.0f""$var")可以处理浮动,但在给定字符串时会遇到非零退出。如果您不介意使用awk,我使用的这个方法对于强制使用整数来说似乎是最健壮的:var=$(<

    展开全文
  • Shell判断路径是否存在

    千次阅读 2020-05-13 17:53:37
    判断路径是否存在 #!/bin/bash # if [ -f "filepath" ] then echo 'exists' else echo 'not exists' fi 参数 说明 -f 文件 -d 目录

    判断路径是否存在

    #!/bin/bash
    #
    if [ -f "filepath" ]
    then
        echo 'exists'
    else
        echo 'not exists'
    fi
    
    参数说明
    -f文件
    -d目录
    展开全文
  • shell判断文件夹是否存在

    千次阅读 2019-06-15 10:23:18
    #shell判断文件,目录是否存在或者具有权限 folder="/Top" file="/Top/test.txt" -x 参数判断 $folder 是否存在并且是否具有可执行权限 if [ ! -x “folder&quot;];thenmkdir&quot;fold...
  • shell中常见参数判断命令

    千次阅读 2019-03-02 22:39:23
    Shell常用特殊变量 经常会在shell命令中,看到$0, $#, $*, $@, $?, $$这样的取值,这些代表什么呢? 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。...
  • linux bash处理较简单的参数。如./test.sh 10而很少使用./test -n 10这种带选项的方式。 典型用法为:#!/bin/bashif [ x$1 != x ] then #...有参数 else then #...没有参数 fi为什么要使用 x$1 != x 这种方式来...
  • shell中关于变量是否存在的问题

    千次阅读 2021-05-12 13:45:13
    [TOC]## fish shell判断某个变量是否存在fish shell 判断变量是否存在直接使用 `test 变量`就可以,然后我们使用`and`和`or`实现if..else..的逻辑。如下所示:```bash#!/usr/bin/env fishset a 1set b 3test $a -gt ...
  • shell判断文件,目录是否存在或者具有权限 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限...
  • Shell判断文件或目录是否存在

    万次阅读 多人点赞 2019-08-30 15:36:11
    Shell判断文件或目录是否存在 一. 具体每个选项对应的判断内容: -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename ...
  • shell 判断远程文件是否存在

    千次阅读 2019-10-10 14:46:14
    1、判断本地文件是否存在: #! bin/sh if [ -f /data/test.data ]; then echo "file found..." else echo "no such file!" fi 2、判断远程文件是否存在: #! bin/sh TEST="10.62.81.96" for ip in $TEST ...
  • 本文主要介绍了linux shell判断文件、目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L ...
  • Shell 判断文件是否存在的方法

    千次阅读 2017-04-21 01:45:31
    #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x " $myPath " ]; then  mkdir " $myPath " fi #这里的-d 参数判断$myPath是否存在 if [ ! -d " $myPath " ]; then ...
  • shell 判断字符串是否存在数组中

    万次阅读 2020-06-04 14:53:42
    语法格式: [[ "${array[@]}" =~ ...# $1 如果存在,输出 $1 exists,$1 如果不存在,输出 $1 not exists if [ "$1" != null ];then if [[ "${array[@]}" =~ "${1}" ]]; then echo "$1 exists" elif [[ ! "${array[@
  • 判断一个脚本中的变量是否为空,我写了一个这样的shell脚本: #!/bin/sh #filename: test.sh para1= if [ ! -n $para1 ]; then echo "IS NULL" else echo "NOT NULL" fi 然后把该脚本:test....
  • Shell判断Docker是否运行一个容器

    千次阅读 2021-07-09 14:21:49
    #!/bin/bash if [[ -n $(docker ps -q -f "name=^myMySQL$") ]];...-n 检测字符串长度是否不为 0,不为 0 返回 true docker ps -q -f "name=^myMySQL$" 正常运行的且容器别名完全匹配myMySQL的容器ID ...
  • shell脚本判断文件是否存在

    万次阅读 2017-12-14 23:01:12
    有一个需求是判断某一个目录下文件是否存在,如果该文件不存在,则从当前目录拷贝文件到该目录。 由于没有学习写过shell脚本,晚上下班回来搜索后写出了如下的脚本,这里shell的if语法格式与C语言大致相同,语法...
  • 文章目录说明if判断的几个实例判断文件是否存在方法一方法二文件夹不存在则创建查询某用户是否存在 关于shell的使用方法 可以参考博客:https://blog.csdn.net/cuichongxin/article/details/101756440 说明 使用if...
  • /bin/sh# 判断文件是否存在# link:www.jb51.net# date:2013/2/28mypath="/var/log/httpd/"myfile="/var /log/httpd/access.log"# 这里的-x 参数判断$mypath是否存在并且是否具有可执行权限if [ ! -x "$mypath"]; ...
  • Shell脚本判断文件是否存在

    万次阅读 2019-09-04 19:49:14
    #shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/Top" ]; then mkdir -p /Topfi #shell判断文件,目录是否存在或者具有权限 folder="/Top" file="/Top/test.txt" # -...
  • Linux Shell判断进程是否存在的代码

    千次阅读 2019-05-11 21:25:52
    1 利用pgrep 匹配名字 复制代码 代码如下: ...echo "进程不存在" else echo "存在进程" fi 以下是补充内容: 当前系统中的进程: apple@ubuntu:~$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 13:57...
  • 要求用户输入一个用户名,查询系统中是否存在该用户,... #判断用户是否存在passwd中 i=`cat /etc/passwd | cut -f1 -d':' | grep -w "$1" -c` if [ $i -le 0 ]; then echo "User $1 is not in ...
  • Linux shell判断文件或目录是否存在

    万次阅读 2017-10-13 17:05:17
    #!/bin/sh myPath="/var/log/httpd/" ...#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then  mkdir "$myPath" fi #这里的-d 参数判断$myPath是否存在 if
  • 最简单的应该是依靠ls返回值(当文件不存在时它会返回非零值):if ls /path/to/your/files* 1> /dev/null 2>&1; then echo "files do exist" else echo "files do not exist" fi我redirectls输出,使其完全...
  • #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x $myPath]; then mkdir $myPath fi #这里的-d 参数判断$myPath是否存在 if [ ! -d $myPath]; then mkdir $myPath fi #这里的-f参数判断$myFile...
  • Shell判断文件,目录是否存在

    千次阅读 2020-01-15 16:58:19
    具体每个选项对应的判断内容: -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为...
  • 我最近写的脚本 你改改就能用 3.sh中全是 /data/test 这样的指向目录的数据 #!/bin/bash #set -x #循环读取文件目录 ...#shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d “/Top
  • 并且为软链接 -s 判断对象是否存在,并且长度不为0 -r 判断对象是否存在,并且可读 -w 判断对象是否存在,并且可写 -x 判断对象是否存在,并且可执行 -O 判断对象是否存在,并且属于当前用户 -G 判断对象是否存在,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,167
精华内容 39,266
关键字:

shell判断参数是否存在