相关疑难解决方法(0)

如何检查字符串是否包含Bash中的子字符串

我在Bash中有一个字符串:

string="My string"
Run Code Online (Sandbox Code Playgroud)

如何测试它是否包含另一个字符串?

if [ $string ?? 'foo' ]; then
  echo "It's there!"
fi
Run Code Online (Sandbox Code Playgroud)

??我的未知运营商在哪里?我是否使用echo grep

if echo "$string" | grep 'foo'; then
  echo "It's there!"
fi
Run Code Online (Sandbox Code Playgroud)

这看起来有点笨拙.

string bash substring

2332
推荐指数
23
解决办法
189万
查看次数

如何比较Bash中的字符串

如何将变量与字符串进行比较(如果匹配则执行某些操作)?

string bash

897
推荐指数
9
解决办法
114万
查看次数

比较Bash中的数字

我开始学习为bash终端编写脚本,但我无法弄清楚如何让比较正常工作.我正在使用的脚本是:

echo "enter two numbers";
read a b;

echo "a=$a";
echo "b=$b";

if [ $a \> $b ];
then 
    echo "a is greater than b";
else
    echo "b is greater than a";
fi;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它比较了第一个数字的数字,即9大于10000,但1大于09

如何将数字转换为类型以进行真正的比较?

bash shell numeric

462
推荐指数
8
解决办法
79万
查看次数

如果,elif,其他声明在Bash中发布

我似乎无法弄清楚以下if陈述的问题是关于elifthen.请记住,printf仍然在开发中我还没有能够在声明中测试它,所以很可能是错误的.

我得到的错误是:

./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'
Run Code Online (Sandbox Code Playgroud)

声明就是这样.

if [ "$seconds" -eq 0 ];then
   $timezone_string="Z"
elif[ "$seconds" -gt 0 ]
then
   $timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
else
   echo "Unknown parameter"
fi
Run Code Online (Sandbox Code Playgroud)

bash if-statement

328
推荐指数
5
解决办法
64万
查看次数

使用sh shell比较字符串

我正在使用SH shell,我正在尝试将字符串与变量的值进行比较,但if条件总是执行为true.为什么?

这是一些代码:

Sourcesystem="ABC"

if [ "$Sourcesystem" -eq 'XYZ' ]; then 
    echo "Sourcesystem Matched" 
else
    echo "Sourcesystem is NOT Matched $Sourcesystem"  
fi;

echo Sourcesystem Value is  $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)

即使这不起作用:

Sourcesystem="ABC"

if [ 'XYZ' -eq "$Sourcesystem" ]; then 
    echo "Sourcesystem Matched" 
else
    echo "Sourcesystem is NOT Matched $Sourcesystem"  
fi;

echo Sourcesystem Value is  $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)

其次,我们可以将它与NULL或空字符串匹配吗?

unix shell sh

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

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

如何调用bash,在新shell中运行命令,然后将控制权交还给用户?

这必须是非常简单或非常复杂,但我找不到任何关于它...我试图打开一个新的bash实例,然后在其中运行一些命令,并将控件返回给用户内部相同的实例.

我试过了:

$ bash -lic "some_command"
Run Code Online (Sandbox Code Playgroud)

但这会some_command在新实例中执行,然后关闭它.我希望它保持开放.

还有一个可能会影响答案的细节:如果我可以让它工作,我会在我的.bashrc别名中使用它,所以实现的奖励积分alias!

bash shell

70
推荐指数
4
解决办法
8万
查看次数

为什么在Bash中'['之前'''之后会有一个空格?

我试图编写一个使用if语句的Bash脚本.

if  [$CHOICE -eq 1];
Run Code Online (Sandbox Code Playgroud)

剧本是给我的错误,直到我后得到的空间[和之前]如下所示:

if  [ $CHOICE -eq 1 ];
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么方括号周围的空间在Bash中如此重要?

syntax bash if-statement

58
推荐指数
3
解决办法
6692
查看次数

Bash:简单的if语句

我的问题可以简化为使以下脚本工作(需要1个命令行参数):

#!/bin/bash
if ["$1" == "0"]; then
    echo "good"
else
    echo "bad"
fi
Run Code Online (Sandbox Code Playgroud)

当我运行脚本0时,这应该打印,但我无法得到它.我尝试了各种数字的引号组合,我尝试过=,==和-eq.所以... bash,它是如何工作的?

bash if-statement

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

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

标签 统计

bash ×9

if-statement ×4

shell ×4

string ×2

unix ×2

linux ×1

numeric ×1

quotes ×1

sh ×1

substring ×1

syntax ×1