Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在shell脚本中以cat命令格式打印echo语句? rm-rf xyz.log 回显“输入n” 阅读 x[0]=ABC x[1]=DEF x[2]=GHI y[0]=MNO y[1]=PQR y[2]=STQ z[0]=RTY z[1]=LKJ z[2]=LDF 对于((i=0;i>xyz.log 完成 o=`cat xyz.log` 回声$o_Linux_Shell_Unix_Awk_Echo - Fatal编程技术网

Linux 如何在shell脚本中以cat命令格式打印echo语句? rm-rf xyz.log 回显“输入n” 阅读 x[0]=ABC x[1]=DEF x[2]=GHI y[0]=MNO y[1]=PQR y[2]=STQ z[0]=RTY z[1]=LKJ z[2]=LDF 对于((i=0;i>xyz.log 完成 o=`cat xyz.log` 回声$o

Linux 如何在shell脚本中以cat命令格式打印echo语句? rm-rf xyz.log 回显“输入n” 阅读 x[0]=ABC x[1]=DEF x[2]=GHI y[0]=MNO y[1]=PQR y[2]=STQ z[0]=RTY z[1]=LKJ z[2]=LDF 对于((i=0;i>xyz.log 完成 o=`cat xyz.log` 回声$o,linux,shell,unix,awk,echo,Linux,Shell,Unix,Awk,Echo,当我执行上面的脚本时,我在一行中获得所有输出,但是在xyz.log中,它是逐行打印的。我希望在echo命令中打印相同的内容。提前感谢 $/val.sh 输入n 三, ABC---MNO---RTY DEF---PQR---LKJ GHI---STQ---LDF $cat xyz.log ABC---MNO---RTY DEF---PQR---LKJ GHI---STQ---LDF选项用于启用echo对换行符的其他实例的解释,以及对其他特殊字符的解释,如用\t表示的水平制表符。因此,例如,以下内容

当我执行上面的脚本时,我在一行中获得所有输出,但是在xyz.log中,它是逐行打印的。我希望在echo命令中打印相同的内容。提前感谢

$/val.sh

输入n

三,

ABC---MNO---RTY DEF---PQR---LKJ GHI---STQ---LDF

$cat xyz.log

ABC---MNO---RTY

DEF---PQR---LKJ


GHI---STQ---LDF

选项用于启用echo对换行符的其他实例的解释,以及对其他特殊字符的解释,如用\t表示的水平制表符。因此,例如,以下内容将生成格式化输出:

    rm -rf xyz.log
    echo "Enter n"
    read n
    x[0]=ABC
    x[1]=DEF
    x[2]=GHI
    y[0]=MNO
    y[1]=PQR
    y[2]=STQ
    z[0]=RTY
    z[1]=LKJ
    z[2]=LDF
    for (( i=0; i<n; ++i ))
    do
      echo "${x[i]} ---- ${y[i]} ---- ${z[i]}" >> xyz.log
    done
    o=`cat xyz.log`
    echo $o
因此,请使用echo命令,如:

echo -e "\n Projects: \n\n\tplan \n\tcode \n\ttest\n"

它将实现这一技巧,并为您提供所需的答案。

使用-e选项可启用echo对换行符的其他实例的解释,以及对其他特殊字符的解释,如水平制表符,它由\t表示。因此,例如,以下内容将生成一个表单格式化输出:

    rm -rf xyz.log
    echo "Enter n"
    read n
    x[0]=ABC
    x[1]=DEF
    x[2]=GHI
    y[0]=MNO
    y[1]=PQR
    y[2]=STQ
    z[0]=RTY
    z[1]=LKJ
    z[2]=LDF
    for (( i=0; i<n; ++i ))
    do
      echo "${x[i]} ---- ${y[i]} ---- ${z[i]}" >> xyz.log
    done
    o=`cat xyz.log`
    echo $o
因此,请使用echo命令,如:

echo -e "\n Projects: \n\n\tplan \n\tcode \n\ttest\n"

它会起作用,并会给你你想要的答案。

使用
echo
上的
-n
选项意味着“不要像往常一样在行尾写换行符。”它记录在
bash
手册页中

我还建议只在文件末尾添加一个换行符,即
echo>>xyz.log

OUTFILE=“xyz.log”

`rm-rf“$OUTFILE”`
回显“输入n”
阅读
x[0]=ABC
x[1]=DEF
x[2]=GHI
y[0]=MNO
y[1]=PQR
y[2]=STQ
z[0]=RTY
z[1]=LKJ
z[2]=LDF
对于((i=0;i>“$OUTFILE”
完成
o=`cat“$OUTFILE”`
回声$o

使用
echo
-n
上的
-n
选项意味着“不要像往常一样在行尾写换行符。”这在
bash
手册页中有说明

我还建议只在文件末尾添加一个换行符,即
echo>>xyz.log

OUTFILE=“xyz.log”

`rm-rf“$OUTFILE”`
回显“输入n”
阅读
x[0]=ABC
x[1]=DEF
x[2]=GHI
y[0]=MNO
y[1]=PQR
y[2]=STQ
z[0]=RTY
z[1]=LKJ
z[2]=LDF
对于((i=0;i>“$OUTFILE”
完成
o=`cat“$OUTFILE”`
回声$o

最后一行缺少引号:

`rm -rf "$OUTFILE"`
echo "Enter n"
read n
x[0]=ABC
x[1]=DEF
x[2]=GHI
y[0]=MNO
y[1]=PQR
y[2]=STQ
z[0]=RTY
z[1]=LKJ
z[2]=LDF
for (( i=0; i<n; ++i )) ; do
    echo -n "${x[i]} ---- ${y[i]} ---- ${z[i]}" >> "$OUTFILE"
done
o=`cat "$OUTFILE"`
echo $o
添加引号将允许shell准确地使用变量的内容。否则,您将要求shell执行分词,其中任何空格序列(包括换行符)都将替换为单个空格(默认情况下)

经验法则:总是引用
“$variables”
,除非您特别不想引用它们

而且,这是错误的

o=`cat xyz.log`
echo "$o"
# ---^--^
您在子shell中执行删除,然后将输出用作命令

`rm -rf xyz.log`

最后一行中缺少引号:

`rm -rf "$OUTFILE"`
echo "Enter n"
read n
x[0]=ABC
x[1]=DEF
x[2]=GHI
y[0]=MNO
y[1]=PQR
y[2]=STQ
z[0]=RTY
z[1]=LKJ
z[2]=LDF
for (( i=0; i<n; ++i )) ; do
    echo -n "${x[i]} ---- ${y[i]} ---- ${z[i]}" >> "$OUTFILE"
done
o=`cat "$OUTFILE"`
echo $o
添加引号将允许shell准确地使用变量的内容。否则,您将要求shell执行分词,其中任何空格序列(包括换行符)都将替换为单个空格(默认情况下)

经验法则:总是引用
“$variables”
,除非您特别不想引用它们

而且,这是错误的

o=`cat xyz.log`
echo "$o"
# ---^--^
您在子shell中执行删除,然后将输出用作命令

`rm -rf xyz.log`

for((i=0;i>xyz.log done o=
cat xyz.log`echo$o`我更改了它,但仍然得到相同的输出。**$./val.sh**输入n3 ABC---MNO---RTY DEF---PQR---LKJ GHI---STQ---ldfn在xyz.log中,输出之间有空行,但我希望它在程序结束时打印在输出中。
((i=0;i>xyz.log done o=
cat xyz.log`echo$o`我更改了它,但仍然得到相同的输出。**$./val.sh**输入n3 ABC---MNO---RTY DEF---PQR---LKJ GHI---STQ---ldfn在xyz.log中,输出之间有空行,但我希望在程序结束时在输出中打印出来。哈,我不确定这是怎么回事我会用修改后的代码编辑答案。对不起,我不知道这是怎么发生的。我会用修改后的代码编辑答案。对不起,混合。+ 1,因为这是你的具体问题的原因。此外,去掉RM命令行周围的蜱,并考虑使用<代码> $(命令)。“/CODE”,而不是BeTICK符号。+ 1,因为这是你的特定问题的原因。此外,去掉RM命令行周围的蜱,并考虑使用<代码> $(命令)< /代码>而不是回溯标记。