相关疑难解决方法(0)

如何在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脚本中检测python版本

我想检测一下Linux系统上是否安装了python,如果是,安装了哪个python版本.

我该怎么做?有没有比解析输出更优雅的东西"python --version"

python shell

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

如何在shell脚本中增加版本号?

以下简单版本控制脚本用于查找给定文件的最后版本号,增加它,使用新创建的文件(例如,编辑器)运行给定命令,然后将其保存到稳定.由于它很简单,因此不会检查任何内容,因为脚本会根据需要进行修改.例如,如果结果不稳定,则用户可以省略最后一个参数.

但是,当前功能的一个主要问题是如何实现以下内容:如果dot之后的最后一个部分有两个数字,则包括直到99; 如果只有1,那么直到9,然后移动到上一节.版本可以具有任何正整数个部分.

1.2.3.44 -> 1.2.3.45
1.2.3.9 -> 1.2.4.0
1.2.3 -> 1.2.4
9 -> 10
Run Code Online (Sandbox Code Playgroud)

剩下的问题是它不会等待标签式葡萄酒编辑器关闭文件; 目标是检测标签何时关闭.另外,您能解释一下如何最好地确保我的变量名称不会覆盖现有变量名称吗?

您还可以提供其他改进.

#!/bin/bash
#Tested on bash 4.1.5
#All arguments in order: "folder with file" "file pattern" cmd [stable name]
folder="$1"
file_pattern="$2"
cmd="$3"
stable="$4"

cd "$folder"
last_version=$(ls --format=single-column --almost-all | \
    grep "$file_pattern" | \
    sed -nr 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p' | \
    sort -Vu | \
    tail -n 1)
last_version_file=$(ls --format=single-column --almost-all | \
    grep "$file_pattern" | \
    grep $last_version | \
    tail -n 1) #tail -n …
Run Code Online (Sandbox Code Playgroud)

bash wine

26
推荐指数
8
解决办法
3万
查看次数

标签 统计

bash ×2

shell ×2

python ×1

scripting ×1

split ×1

wine ×1