我把这个字符串存储在一个变量中:
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)
我不一定需要ADDR1和ADDR2变量.如果它们是阵列的元素甚至更好.
根据以下答案的建议,我最终得到了以下内容,这就是我所追求的:
#!/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它工作.
我有一个包含以下代码的shell脚本:
var=`hg st -R "$path"`
if [ -n "$var" ]; then
echo $var
fi
Run Code Online (Sandbox Code Playgroud)
但条件代码总是执行,因为hg st始终打印至少一个换行符.
$var(比如trim()在PHP中)?要么
x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)
如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.
当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.
那么循环find执行命令结果的最佳方法是什么?
我有一个生成如下的字符串:
192.168.1.1,UPDOWN,Line protocol on Interface GigabitEthernet1/0/13, changed state to up
Run Code Online (Sandbox Code Playgroud)
如何取出该字符串并从中生成2个变量(使用bash)?
比如我想要的
$ip=192.168.1.1
$int=GigabitEthernet1/0/13
Run Code Online (Sandbox Code Playgroud) 我在循环访问 sed 返回的存储在变量中的行时遇到问题。
目前看起来有点像这样
lines=$(sed -rne '/'"$timestamplastupload"'/,/'"$timestampnow"'/ p' /var/log/test.log)
for line in "$lines"; do
echo "This line is: $line"
done
Run Code Online (Sandbox Code Playgroud)
但到目前为止这不起作用,循环运行一次,而 $line 变量的内容似乎是整个 $lines 变量,因此只打印一次,而不是逐行循环,前缀为“This line is:”
我缺少什么能够逐段循环 sed 输出的每一行。(最终我会将匹配的行逐行上传到 API),因此我需要单独处理每一行,以便我可以根据需要处理它们。
根据要求,sed 的一些输出已被整理以确保安全
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452180 xxx/1.2.3.4:55487 SIGUSR1[soft,ping-restart] received, client-instance restarting …Run Code Online (Sandbox Code Playgroud) 我有一个要求,我需要在本地设置 kafka,主题已经存在于容器中。我正在使用它ladoop/fast-data-dev来做到这一点
我是如何手动做的-
docker run -d --name landoopkafka -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 9092:9092 -e ADV_HOST=localhost landoop/fast-data-dev
Run Code Online (Sandbox Code Playgroud)
运行此命令后,我的容器已启动并正在运行。
现在我像 docker -exec -it landopkafka bash 一样进入这个容器内的 bash
并使用此命令创建主题
kafka-topics --zookeeper localhost:2181 --create --topic hello_topic --partitions 1 --replication-factor 1
Run Code Online (Sandbox Code Playgroud)
我的主题已创建。
但我的要求是我需要一个 docker 文件,该文件将创建主题,我只需要运行它。
或者
我需要运行的 docker compose 文件
伙计们,我需要这方面的帮助,因为我对 docker 和 kafka 完全陌生
需要一个函数来转义包含 awk 脚本中的正则表达式运算符的字符串。
我遇到了这个“丑陋”的解决方案:
function escape_string( str )
{
gsub( /\\/, "\\\\", str );
gsub( /\./, "\\.", str );
gsub( /\^/, "\\^", str );
gsub( /\$/, "\\$", str );
gsub( /\*/, "\\*", str );
gsub( /\+/, "\\+", str );
gsub( /\?/, "\\?", str );
gsub( /\(/, "\\(", str );
gsub( /\)/, "\\)", str );
gsub( /\[/, "\\[", str );
gsub( /\]/, "\\]", str );
gsub( /\{/, "\\{", str );
gsub( /\}/, "\\}", str );
gsub( /\|/, "\\|", str );
return …Run Code Online (Sandbox Code Playgroud) 在 bash 中,我有一个字符串,我想在数组中转换并在 for 循环中使用它,但跳过第一个元素。下面的代码不起作用:
build_string="100 99 98"
build_list=("$build_string")
echo $build_list
for i in "${build_list[@]:1}"
do echo "i: " $i
done
Run Code Online (Sandbox Code Playgroud)
for 循环不打印任何内容。你可以帮帮我吗?谢谢。
为什么不能使用以下bash代码?
for i in $( echo "emmbbmmaaddsb" | split -t "mm" )
do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
预期产量:
e
bb
aaddsb
Run Code Online (Sandbox Code Playgroud) 我只需要打印900这一行:auth required pam_faillock.so preauth silent deny=3 unlock_time=604800 fail_interval=900
但是,该行并不总是按此顺序排列。
我需要找出如何打印 后的值=。我需要这样做unlock_time和fail_interval
我整晚都在寻找完全适合我的东西,但找不到。我一直在摆弄 sed 和 awk,但还没有确定这一点。