带单引号和双引号的bash数组eval和echo
我需要编写一个脚本,输出XML文件的第一行,如下所示:带单引号和双引号的bash数组eval和echo,bash,Bash,我需要编写一个脚本,输出XML文件的第一行,如下所示: <?xml version="1.0" > 并且还响应相应的命令。 换言之,我想要一个等价物: mike@remote:#echo \<?xml version=\"1.0\" \> > file.xml mike@remote:#cat file.xml <?xml version="1.0" > mike@remote:# 下面是我的脚本,但我无法让它工作。我确实需要使用数组,因为我以后添
<?xml version="1.0" >
并且还响应相应的命令。
换言之,我想要一个等价物:
mike@remote:#echo \<?xml version=\"1.0\" \> > file.xml
mike@remote:#cat file.xml
<?xml version="1.0" >
mike@remote:#
下面是我的脚本,但我无法让它工作。我确实需要使用数组,因为我以后添加了几个命令
#!/bin/bash
COMMAND1='echo \<?xml version=\"1.0\" \> > file.xml'
ARRAY=("$COMMAND1")
for COMMAND in ${ARRAY[@]}; do
eval $COMMAND
echo "$COMMAND"
done
有人知道怎么解决这个问题吗
谢谢,它应该是这样的:
#!/bin/bash
COMMAND1='echo \<?xml version=\"1.0\"\> > file.xml'
ARRAY=("$COMMAND1")
for COMMAND in "${ARRAY[@]}"; do
eval "$COMMAND"
echo "$COMMAND"
done
运行脚本后,我运行cat file.xml,输出为:
<?xml version="1.0">
用T恤怎么样?既然你说你有很多命令,它们都是file.xml吗?不太清楚你想要什么也许你想澄清一下,但这里有一个例子:
#!/bin/bash
STRING1='<?xml version="1.0">'
> file.xml
ARRAY=("$STRING1")
for STRING in "${ARRAY[@]}"; do
echo "$STRING" | tee -a file.xml
done
tee-a在将输出附加到file.xml的同时,继续打印到控制台。您需要引用数组扩展以防止分词。您的问题描述与脚本不匹配。请精确输入和期望输出是什么。具体地说:您的输入是xml文件,还是echo\听起来很模糊
#!/bin/bash
STRING1='<?xml version="1.0">'
> file.xml
ARRAY=("$STRING1")
for STRING in "${ARRAY[@]}"; do
echo "$STRING" | tee -a file.xml
done