相关疑难解决方法(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中的分隔符上拆分字符串?

我把这个字符串存储在一个变量中:

IN="bla@some.com;john@home.com"
Run Code Online (Sandbox Code Playgroud)

现在我想通过;分隔符拆分字符串,以便我有:

ADDR1="bla@some.com"
ADDR2="john@home.com"
Run Code Online (Sandbox Code Playgroud)

我不一定需要ADDR1ADDR2变量.如果它们是阵列的元素甚至更好.


根据以下答案的建议,我最终得到了以下内容,这就是我所追求的:

#!/usr/bin/env bash

IN="bla@some.com;john@home.com"

mails=$(echo $IN | tr ";" "\n")

for addr in $mails
do
    echo "> [$addr]"
done
Run Code Online (Sandbox Code Playgroud)

输出:

> [bla@some.com]
> [john@home.com]
Run Code Online (Sandbox Code Playgroud)

有一个涉及设置Internal_field_separator(IFS)的解决方案;.我不确定该答案发生了什么,你如何重置IFS为默认值?

RE:IFS解决方案,我试过这个并且它可以工作,我保持旧的IFS然后恢复它:

IN="bla@some.com;john@home.com"

OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
    echo "> [$x]"
done

IFS=$OIFS
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我试过的时候

mails2=($IN)
Run Code Online (Sandbox Code Playgroud)

我只是在循环打印时得到第一个字符串,没有括号围绕$IN它工作.

bash shell scripting split

1885
推荐指数
22
解决办法
204万
查看次数

我们什么时候需要围绕shell变量的花括号?

在shell脚本中,我们{}何时在扩展变量时使用?

例如,我见过以下内容:

var=10        # Declare variable

echo "${var}" # One use of the variable
echo "$var"   # Another use of the variable
Run Code Online (Sandbox Code Playgroud)

是否存在显着差异,还是只是风格?一个比另一个更受欢迎吗?

syntax bash shell curly-braces

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

如何测试变量是否是Bash中的数字?

我无法弄清楚如何确保传递给我的脚本的参数是否为数字.

我想做的就是这样:

test *isnumber* $1 && VAR=$1 || echo "need a number"
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

linux bash shell

543
推荐指数
21
解决办法
61万
查看次数

bash中字符串的长度

如何获取存储在变量中的字符串的长度并将其分配给另一个变量?

myvar="some string"
echo ${#myvar}  
# 11
Run Code Online (Sandbox Code Playgroud)

如何将另一个变量设置为输出11

variables bash string-length

393
推荐指数
9
解决办法
47万
查看次数

shell脚本中的Concat字符串

如何在shell中连接字符串?它只是......

var = 'my';
var .= 'string';
Run Code Online (Sandbox Code Playgroud)

bash string-concatenation

45
推荐指数
3
解决办法
18万
查看次数

在Bash中连接变量

愚蠢的问题毫无疑问,我正在尝试将变量添加到变量的中间,所以例如在PHP中我会这样做:

$mystring = $arg1 . '12' . $arg2 . 'endoffile';
Run Code Online (Sandbox Code Playgroud)

所以输出可能是20121201endoffile,我如何在linux bash脚本中实现相同的功能呢?

bash shell string-concatenation

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

如何从linux命令行获取视频文件的分辨率(宽度和高度)?

我一直在挖掘mplayer/mencoder和ffmpeg文档,我似乎无法想出任何东西.我对输出格式并不是特别挑剔,因为我可以使用正则表达式将其拉出来,我似乎无法在第一时间获取数据.

linux video command-line ffmpeg resolution

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

将多个args从bash传递给python

我有一个简短的内联python脚本,我从一个bash脚本调用,我想让它处理一个多字变量(来自$*).我希望这只是工作:

#!/bin/bash

arg="A B C"
python -c "print '"$arg"'"
Run Code Online (Sandbox Code Playgroud)

但它没有:

  File "<string>", line 1
    print 'A
           ^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

为什么?

python string bash command-line-arguments

9
推荐指数
2
解决办法
1690
查看次数

从Linux bash中的Windows中形成的文本文件中读取内容

我正在尝试使用wget和url从数据库下载文件.例如

wget" http://www.rcsb.org/pdb/files/1BXS.pdb "

所以url的格式是这样的:http://www.rcsb.org/pdb/files/($ idnumber).pdb"

但我有很多文件需要下载; 所以我写了一个bash脚本,从文本文件中读取id_numbers,形成url字符串并通过wget下载.

!/bin/bash

while read line
do
url="http://www.rcsb.org/pdb/files/$line.pdb"
echo -e $url
wget $url
done < id_numbers.txt
Run Code Online (Sandbox Code Playgroud)

但是,url字符串形成为

.pdb://www.rcsb.org/pdb/files/4H80
Run Code Online (Sandbox Code Playgroud)

所以,.pdb是补充http.我无法弄清楚为什么.有没有人有想法?我如何格式化它以便url

"http://www.rcsb.org/pdb/files/($idnumber).pdb"
Run Code Online (Sandbox Code Playgroud)

?非常感谢.

注意.这个问题被标记为"如何在bash中连接字符串?"的副本 但我实际上是在寻求别的东西.我在问这个问题之前就已经阅读了这个问题,事实证明我的问题是在Windows中准备txt文件并不是真正的字符串.我编辑了问题标题.我希望现在更清楚了.

string bash string-concatenation

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