相关疑难解决方法(0)

如何从Bash脚本检查程序是否存在?

如何验证程序是否存在,以返回错误并退出或继续脚本的方式?

看起来应该很容易,但它一直在困扰我.

bash

2032
推荐指数
20
解决办法
62万
查看次数

为什么0为真,但shell中的false为1?

false; echo $?
Run Code Online (Sandbox Code Playgroud)

以上将输出1,这与我所知道的所有其他编程语言相矛盾.

这有什么理由吗?

shell boolean

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

如何在bash中的if块中计算布尔变量?

我已经定义了以下变量:

myVar=true
Run Code Online (Sandbox Code Playgroud)

现在我想按照以下方式运行:

if [ myVar ]
then
    echo "true"
else
    echo "false"
fi
Run Code Online (Sandbox Code Playgroud)

上面的代码确实有效,但如果我尝试设置

myVar=false
Run Code Online (Sandbox Code Playgroud)

它仍将输出真实.可能是什么问题?

编辑:我知道我可以做一些表格

if [ "$myVar" = "true" ]; then ...
Run Code Online (Sandbox Code Playgroud)

但它有点尴尬.

谢谢

bash

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

如何从shell调用.bashrc中定义的函数?

在我的.bashrc中,我有一个名为hello的函数:

function hello() {
   echo "Hello, $1!"
}
Run Code Online (Sandbox Code Playgroud)

我希望能够从shell调用hello(),如下所示:

$ hello Lloyd
Run Code Online (Sandbox Code Playgroud)

得到输出:

> Hello, Lloyd!
Run Code Online (Sandbox Code Playgroud)

有什么诀窍?

(当然,我想到的真正功能更复杂.)

编辑:这真的是由函数中的语法错误引起的,我想!:(

function coolness() {

    if[ [-z "$1"] -o [-z "$2"] ]; then
        echo "Usage: $0 [sub_package] [endpoint]";
        exit 1;
    fi
        echo "Hi!"
}
Run Code Online (Sandbox Code Playgroud)

bash shell function

55
推荐指数
5
解决办法
7万
查看次数

"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万
查看次数

如何通过ssh检查dir是否存在并将结果返回给主机

我正在尝试建立SSH连接并查看是否存在目录,如果该目录存在,我想在进行SSH调用的本地计算机上运行命令.

这是我尝试过的:

if [ ssh -t username@ssh_server -d /directory ]
then
{
    commands....
}
fi
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

ssh bash shell

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

在bash脚本中遇到"一元运算符期望"

在我的bash脚本中,我有一个函数为后面的main函数的条件返回0或1(true或false).

function1 () { 
    if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then
        return 1
    else
        return 0
    fi 
}
Run Code Online (Sandbox Code Playgroud)

然后在我的主要功能:

main () { 
    for arg in ${@} ; do
        if [ function1 ${arg} ] ; then
            ...
        elif [ ... ] ; then
            ...
        fi
    done
}
Run Code Online (Sandbox Code Playgroud)

然而,当我运行这个脚本时它总是给我一个错误信息"[:function1:一元运算符预期"

有人可以帮我吗?

bash if-statement unary-operator

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

bash中unset和empty变量之间的区别

使用bash,检查变量是否为空的最佳方法是什么?

如果我使用:

if [ -z "$VAR" ]
Run Code Online (Sandbox Code Playgroud)

正如在论坛中所建议的那样,这适用于未设置的变量,但是当变量设置为空时它是正确的.建议?

bash

11
推荐指数
2
解决办法
5541
查看次数

用于将磁盘添加到 fstab(如果不存在)的脚本

首先,我已经阅读了许多带有 if 子句的帖子(见底部)以在文件中搜索特定字符串并按照 1to1 的顺序关注这些帖子,但是我无法让我的脚本正常工作。/etc/fstab如果尚不存在,我想输入:

#!/bin/bash
fstab=/etc/fstab

if grep -q "poky-disc" "$fstab"
then
    echo "#poky-disc" >> /etc/fstab
    echo "/dev/sdb1 /media/poky ext4 defaults 0 2" >> /etc/fstab
else
    echo "Entry in fstab exists."
fi
Run Code Online (Sandbox Code Playgroud)

提前感谢您的帮助。这些是类似的帖子,并没有进一步帮助我:

bash grep path

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

为什么测试"$?" 一个反模式,看一个命令是否成功?

在这里看到测试是否$?是零(成功)或其他东西(失败)是反模式,但我无法在其他任何地方找到它.

坚持维基百科反模式的定义:"反模式(或反模式)是对反复出现的问题的常见反应,这种反复出现的问题通常是无效的,并且可能会产生极大的反作用." 为什么这会是反模式?

bash shell sh

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

对于文件中的每一行,确定字符串是否存在于另一个文件中

我有一个带有五列的制表符分隔文本文件 (animals.txt):

302947298 2340974238 0 0 cat
345098948 8345988989 0 0 dog
098982388 2098340923 0 0 fish
932840923 0923840988 0 0 parrot
Run Code Online (Sandbox Code Playgroud)

我有另一个文件,mess.txt.gz,它是使用 GNU zip(.gz 文件)压缩的。它基本上看起来像一串巨大的字母:

sdihfoiahdfosparrotdhiafoihsdfoijaslkdogoieufoiweuf
Run Code Online (Sandbox Code Playgroud)

基本上,对于制表符分隔的文本文件中的每一行,我想查看此 .gz 文件中是否存在任何动物名称。

理想情况下,它会返回如下内容:

302947298 2340974238 0 0 cat no
345098948 8345988989 0 0 dog yes
098982388 2098340923 0 0 fish no
932840923 0923840988 0 0 parrot yes
Run Code Online (Sandbox Code Playgroud)

目前我正在做以下事情:

gunzip -cd mess.txt.gz | grep cat
gunzip -cd mess.txt.gz | grep dog
Run Code Online (Sandbox Code Playgroud)

为了自动化,我尝试了以下方法:

cat animals.txt | awk '{print $5}' > animal_names.txt

cat animal_names.txt | …
Run Code Online (Sandbox Code Playgroud)

bash

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