相关疑难解决方法(0)

如何在Bash中连接字符串变量

在PHP中,字符串连接在一起如下:

$foo = "Hello";
$foo .= " World";
Run Code Online (Sandbox Code Playgroud)

在这里,$foo成为"Hello World".

在Bash中如何实现?

syntax bash shell concat string-concatenation

2624
推荐指数
25
解决办法
343万
查看次数

如何在Bash中将变量设置为命令的输出?

我有一个非常简单的脚本,如下所示:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行此脚本并将参数传递给它时,我没有得到任何输出.但是,当我运行$MOREF变量中包含的命令时,我能够获得输出.

我想知道如何获取需要在脚本中运行的命令的结果,将其保存到变量,然后在屏幕上输出该变量?

bash shell command-line

1513
推荐指数
14
解决办法
170万
查看次数

在Bash中将字符串拆分为数组

在Bash脚本中,我想将一行分成几部分并将它们存储在一个数组中.

这条线:

Paris, France, Europe
Run Code Online (Sandbox Code Playgroud)

我想将它们放在这样的数组中:

array[0] = Paris
array[1] = France
array[2] = Europe
Run Code Online (Sandbox Code Playgroud)

我想用简单的代码,命令的速度无关紧要.我该怎么做?

arrays bash split

577
推荐指数
12
解决办法
79万
查看次数

如何将一个字符串拆分为由bash shell中至少一个空格分隔的多个字符串?

我有一个包含许多单词的字符串,每两个单词之间至少有一个空格.如何将字符串拆分为单个单词,以便循环使用它们?

该字符串作为参数传递.例如${2} == "cat cat file".我怎么能循环呢?

另外,如何检查字符串是否包含空格?

string bash shell split

204
推荐指数
9
解决办法
35万
查看次数

何时在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中将一个字符串拆分为多个变量?

我一直在寻找一个解决方案并找到类似的问题,只是他们试图在它们之间用空格分割句子,而答案对我的情况不起作用.

目前一个变量被设置为像这样的字符串:
ABCDE-123456
我想将它分成2个变量,同时消除" - ".即:
var1=ABCDE
var2=123456

怎么可能做到这一点?


这是对我有用的解决方案:
var1=$(echo $STR | cut -f1 -d-)
var2=$(echo $STR | cut -f2 -d-)

是否可以使用cut命令在没有分隔符的情况下工作(每个字符都设置为变量)?

var1=$(echo $STR | cut -f1 -d?)
var2=$(echo $STR | cut -f1 -d?)
var3=$(echo $STR | cut -f1 -d?)
etc.

variables bash shell

141
推荐指数
5
解决办法
32万
查看次数

如何在Bash中对数组进行排序

我在Bash中有一个数组,例如:

array=(a c b f 3 5)
Run Code Online (Sandbox Code Playgroud)

我需要对数组进行排序.不只是以排序的方式显示内容,而是获取带有已排序元素的新数组.新排序的数组可以是全新的也可以是旧的.

arrays sorting bash shell

123
推荐指数
7
解决办法
13万
查看次数

IFS = $'\n'的确切含义是什么?

如果以下示例将IFS环境变量设置为换行符...

IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)
  • 什么是美元符号的意思 完全相同
  • 在这个具体案例中它做了什么?
  • 我在哪里可以阅读有关此特定用法的更多信息(Google不允许在搜索中使用特殊字符,否则我不知道该寻找什么)?

我知道IFS环境变量是什么,\n字符是什么(换行),但为什么不使用以下形式:( IFS="\n"哪个不起作用)?

例如,如果我想循环遍历文件的每一行并想要使用for循环,我可以这样做:

for line in (< /path/to/file); do
    echo "Line: $line"
done
Run Code Online (Sandbox Code Playgroud)

但是,除非IFS设置为换行符,否则这将无法正常工作.为了让它工作,我必须这样做:

OLDIFS=$IFS
IFS=$'\n'
for line in (< /path/to/file); do
    echo "Line: $line"
done
IFS=$OLDIFS
Run Code Online (Sandbox Code Playgroud)

注意:我不需要另一种方式做同样的事情,我已经知道很多其他的...我只是对此感到好奇,$'\n'并想知道是否有人可以给我一个解释.

variables bash shell environment-variables ifs

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

循环逗号分隔的shell变量

假设我有一个Unix shell变量,如下所示

variable=abc,def,ghij
Run Code Online (Sandbox Code Playgroud)

我想使用for循环提取所有值(abc,defghij)并将每个值传递给过程.

该脚本应允许从中提取任意数量的逗号分隔值$variable.

unix shell loops for-loop cut

80
推荐指数
5
解决办法
12万
查看次数

在Bash中将日期时间字符串转换为纪元

日期时间字符串采用以下格式:06/12/2012 07:21:22.如何将其转换为UNIX时间戳或纪元?

bash shell date

74
推荐指数
5
解决办法
12万
查看次数