相关疑难解决方法(0)

Shell脚本奇怪的回声行为

我想以这种方式打印我从Array拆分中获得的内容:

string="abc test;ABCtest.it"

IFS=';' read -a array <<< "$string"
name="${array[0]}"
url="${array[1]}"

echo -ne "\n$url,$name" >> "$outputDir/$fileName"
Run Code Online (Sandbox Code Playgroud)

但输出文件不包含url部分

我认为问题是"." 但我不知道如何解决它

如果我试试这个

echo $url
Run Code Online (Sandbox Code Playgroud)

这是工作!

谢谢


我也试过printf和硬编码的文件名,但没有!

printf '%s %s\n' "$url" "$name"  >> test.txt
Run Code Online (Sandbox Code Playgroud)

似乎当我尝试在变量$ url之后连接另一个东西时,变量的某些部分被删除或覆盖到输出文件中

例如,如果我尝试这个

printf '%s %s\n' "$url" "pp"  >> test.txt
Run Code Online (Sandbox Code Playgroud)

我用简单的cat test.txt得到的是:

 pptest.it
Run Code Online (Sandbox Code Playgroud)

但变量$ url的内容必须是ABCTest.it

这很奇怪

bash echo

5
推荐指数
1
解决办法
2183
查看次数

echo BASH变量覆盖文本问题

OS X 10.6.5,BASH

当我运行这个:

echo $IP; echo of; echo $IPLINES
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

219.80.4.150:3128
of
1108
Run Code Online (Sandbox Code Playgroud)

当我运行这个:

echo $IP of $IPLINES
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

 of 1108.150:3128
Run Code Online (Sandbox Code Playgroud)

我期望得到:

219.80.4.150:3128 of 1108
Run Code Online (Sandbox Code Playgroud)

什么会导致我得到的扭曲输出?

实际的脚本是这样的:

#!/bin/bash

IPLINES=`cat a.txt | wc -l | awk '{print $1}'`

if [ $IPLINES > 1 ]; then
    LINE=`expr $RANDOM % $IPLINES + 1`
    IP=`head -$LINE a.txt | tail -1`
    sed -e "${LINE}d" -i .b a.txt

    echo $IP of $IPLINES
fi
Run Code Online (Sandbox Code Playgroud)

macos bash echo

4
推荐指数
1
解决办法
4741
查看次数

标签 统计

bash ×2

echo ×2

macos ×1