我在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)
这看起来有点笨拙.
我开始学习为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
如何将数字转换为类型以进行真正的比较?
我似乎无法弄清楚以下if陈述的问题是关于elif和then.请记住,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) 我正在使用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或空字符串匹配吗?
有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
这必须是非常简单或非常复杂,但我找不到任何关于它...我试图打开一个新的bash实例,然后在其中运行一些命令,并将控件返回给用户内部相同的实例.
我试过了:
$ bash -lic "some_command"
Run Code Online (Sandbox Code Playgroud)
但这会some_command在新实例中执行,然后关闭它.我希望它保持开放.
还有一个可能会影响答案的细节:如果我可以让它工作,我会在我的.bashrc别名中使用它,所以实现的奖励积分alias!
我试图编写一个使用if语句的Bash脚本.
if [$CHOICE -eq 1];
Run Code Online (Sandbox Code Playgroud)
剧本是给我的错误,直到我后得到的空间[和之前]如下所示:
if [ $CHOICE -eq 1 ];
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么方括号周围的空间在Bash中如此重要?
我的问题可以简化为使以下脚本工作(需要1个命令行参数):
#!/bin/bash
if ["$1" == "0"]; then
echo "good"
else
echo "bad"
fi
Run Code Online (Sandbox Code Playgroud)
当我运行脚本0时,这应该打印好,但我无法得到它.我尝试了各种数字的引号组合,我尝试过=,==和-eq.所以... bash,它是如何工作的?