相关疑难解决方法(0)

如何使用双括号或单括号,括号,花括号

我对Bash中括号,括号,花括号的用法以及它们的双重或单一形式之间的区别感到困惑.有明确的解释吗?

syntax bash

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

何时在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万
查看次数

测试string是否为有效整数

我正在尝试做一些常见的事情:在shell脚本中解析用户输入.如果用户提供了有效的整数,则脚本会执行一项操作,如果无效,则执行其他操作.麻烦的是,我还没有找到一种简单(而且相当优雅)的方式 - 我不想用char来区分char.

我知道这一定很容易,但我不知道如何.我可以用十几种语言来做,但不是BASH!

在我的研究中,我发现了这个:

正则表达式,用于测试字符串是否包含基数为10的有效实数

其中有一个关于正则表达式的答案,但据我所知,这是C(以及其他)中可用的函数.尽管如此,它看起来像是一个很好的答案,所以我用grep尝试了它,但是grep不知道该怎么做.我试过-P在我的盒子上意味着把它当作PERL regexp - nada.Dash E(-E)也没有用.并且-F都没有.

为了清楚起见,我正在尝试这样的东西,寻找任何输出 - 从那里,我将破解脚本以利用我得到的任何东西.(IOW,我期待一个不合格的输入在有效行重复时不返回任何内容.)

snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/")
if [ -z "$snafu" ] ;
then
   echo "Not an integer - nothing back from the grep"
else
   echo "Integer."
fi
Run Code Online (Sandbox Code Playgroud)

有人请说明这是最容易做到的吗?

坦率地说,在我看来,这是TEST的缩影.它应该有这样的旗帜

if [ -I "string" ] ;
then
   echo "String is a valid integer."
else
   echo "String is not a valid integer."
fi
Run Code Online (Sandbox Code Playgroud)

string bash integer if-statement

108
推荐指数
7
解决办法
14万
查看次数

标签 统计

bash ×3

if-statement ×1

integer ×1

linux ×1

quotes ×1

shell ×1

string ×1

syntax ×1

unix ×1