相关疑难解决方法(0)

如何检查Bash中是否设置了变量?

我如何知道Bash中是否设置了变量?

例如,如何检查用户是否将第一个参数提供给函数?

function a {
    # if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud)

variables bash shell

1417
推荐指数
23
解决办法
119万
查看次数

一元运营商的预期

我一直试图弄清楚这有什么不对,但是无法弄清楚..

这部分似乎是一个错误..

elif [ $operation = "man" ]; then
    if [ $aug1 = "add" ]; then         # <- Line 75
    echo "Man Page for: add"
    echo ""
    echo "Syntax: add [number 1] [number 2]"
    echo ""
    echo "Description:"
    echo "Add two different numbers together."
    echo ""
    echo "Info:"
    echo "Added in v1.0"
    echo ""
elif [ -z $aug1 ]; then
    echo "Please specify a command to read the man page."
else
    echo "There is no manual page for that command." …
Run Code Online (Sandbox Code Playgroud)

bash shell

189
推荐指数
3
解决办法
31万
查看次数

如何判断字符串是否未在bash shell脚本中定义?

如果我想检查空字符串,我会这样做

[ -z $mystr ]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想检查变量是否已定义呢?或者bash脚本没有区别?

string bash shell scripting null

149
推荐指数
6
解决办法
17万
查看次数

查找空目录UNIX

我需要为给定的目录列表找到空目录.有些目录里面有目录.

如果内部目录也是空的,我可以说主目录是空的,否则它不是空的.

我该怎么测试呢?

例如:

A>A1(file1),A2 this is not empty beacuse of file1
B>B1(no file) this is empty
C>C1,C2 this is empty
Run Code Online (Sandbox Code Playgroud)

unix directory bash

88
推荐指数
6
解决办法
6万
查看次数

如果Git提交是Merge/Revert提交则告诉

我正在编写一个脚本,需要检查特定提交是否是合并/恢复提交,我想知道是否有一个git技巧.

到目前为止我提出的(我绝对不想依赖于提交消息)是检查HASH^2并查看我是否没有收到错误,是否有更好的方法?

git git-merge git-commit git-hash

33
推荐指数
5
解决办法
1万
查看次数

"if"列表在哪里切换?

是否有if用于bash脚本的所有开关的列表?有时我看到有人使用它,我想知道他们正在使用的切换实际上是做什么的.

例子就是-z这一个.我知道如何使用它,但我不知道它是从哪里得到的.

if [ -z "$BASH_VERSION" ]; then
    echo -e "Error: this script requires the BASH shell!"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

任何参考,指南,帖子,答案将不胜感激.

bash if-statement shell-exec switch-statement

30
推荐指数
4
解决办法
2万
查看次数

在bash中检查空字符串

以下测试之间有什么区别吗?

[[ "$STRING" = "" ]] && exit 1;


[[ "x$STRING" = "x" ]] && exit 1;


[[ -z $STRING ]] && exit 1;
Run Code Online (Sandbox Code Playgroud)

linux bash

5
推荐指数
1
解决办法
6933
查看次数

在 bash 中使用 -z 测试有优势吗?

man test

       ! EXPRESSION
              EXPRESSION is false
Run Code Online (Sandbox Code Playgroud)

       -n STRING
              the length of STRING is nonzero

       STRING equivalent to -n STRING

       -z STRING
              the length of STRING is zero
Run Code Online (Sandbox Code Playgroud)

因此与(上面明确指出的)[ "$x" ]具有相同的效果,并且隐式地与 具有相同的效果。那么,为什么人们会选择使用或者可以说其他形式更清晰呢?这只是个人喜好还是我错过了一个重要的区别?[ -n "$x" ][ ! "$x" ][ -z "$x" ]-n-z

我见过关于此的其他问题(例如这个问题),但没有什么可以确定它们是否在功能上相同。$x我确实想知道如果我使用-nor是否可以避免引用,-z但如果$x包含空格,则与其他方法一样会失败。

bash

5
推荐指数
1
解决办法
79
查看次数

( if [ -z "$1" ] ) 条件在 bash 编程中意味着什么

我有一个脚本如下:

#!/bin/bash

if [ -z "$1" ]; then
        echo "Missing output folder name"
        exit 1
fi

split -l 10000 --additional-suffix=.ordtmp orders.txt orders

for f in `ls *.ordtmp`; do
        if [ "$2" == "local" ]; then
                mv $f $1
        else
                hdfs dfs -copyFromLocal $f $1
                rm -f $f
        fi
        sleep 3
done
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,出现以下错误:

(base) 01HW993798:ch06 tcssig$ ./splitAndSend.sh
Missing output folder name
Run Code Online (Sandbox Code Playgroud)

文件是否期望在运行时提及输出文件夹?

macos bash

2
推荐指数
1
解决办法
1万
查看次数

使用 if else bash 脚本检查变量是否存在

我尝试编写一个非常简单的 bash 脚本文件,名为bash_script.sh

#!/bin/bash

if [ -z $1 ];then
        echo $1
else
        echo 'no variable'
fi
Run Code Online (Sandbox Code Playgroud)

在终端中我尝试运行,./bash_script.sh hello但终端上的输出是no variable. 我在这里做错了什么?

bash

1
推荐指数
1
解决办法
5420
查看次数