请教大家一个字符串相关的shell脚本问题
#!/bin/sh
while read line
do
rt="iosncd -A -o /bin/"$line" -j DEWR"
echo $rt
done < test.txt
其中test.txt内容为:
alsacard
alsaunmute
arch
basename
bash
cat
chgrp
chmod
chown
cp
cpio
cut
date
dbus-cleanup-sockets
dbus-daemon
dbus-monitor
dbus-send
dbus-uuidgen
dd
df
......
.......
运行结果为:
-j DEWRA -o /bin/alsacard
-j DEWRA -o /bin/alsaunmute
-j DEWRA -o /bin/arch
-j DEWRA -o /bin/basename
-j DEWRA -o /bin/bash
-j DEWRA -o /bin/cat
-j DEWRA -o /bin/chgrp
-j DEWRA -o /bin/chmod
-j DEWRA -o /bin/chown
-j DEWRA -o /bin/cp
-j DEWRA -o /bin/cpio
-j DEWRA -o /bin/cut
-j DEWRA -o /bin/date
-j DEWRA -o /bin/dbus-cleanup-sockets
-j DEWRA -o /bin/dbus-daemon
-j DEWRA -o /bin/dbus-monitor
......................
.....................
与预期的不符合啊,预期结果应该是:
iosncd -A -o /bin/alsacard -j DEWR
............................
...........................
大家帮我看看 谢谢了。。。
[解决办法]
rt="iosncd -A -o /bin/${line} -j DEWR"
[解决办法]
你看 这是在我这里的运行结果
iosncd -A -o /bin/alsacard -j DEWRiosncd -A -o /bin/alsaunmute -j DEWRiosncd -A -o /bin/arch -j DEWRiosncd -A -o /bin/basename -j DEWRiosncd -A -o /bin/bash -j DEWRiosncd -A -o /bin/cat -j DEWRiosncd -A -o /bin/chgrp -j DEWRiosncd -A -o /bin/chmod -j DEWRiosncd -A -o /bin/chown -j DEWRiosncd -A -o /bin/cp -j DEWRiosncd -A -o /bin/cpio -j DEWRiosncd -A -o /bin/cut -j DEWRiosncd -A -o /bin/date -j DEWRiosncd -A -o /bin/dbus-cleanup-sockets -j DEWRiosncd -A -o /bin/dbus-daemon -j DEWRiosncd -A -o /bin/dbus-monitor -j DEWRiosncd -A -o /bin/dbus-send -j DEWRiosncd -A -o /bin/dbus-uuidgen -j DEWRiosncd -A -o /bin/dd -j DEWR
[解决办法]
#!/bin/sh
while read line
do
---echo "$line"--------打印一下试试!
rt="iosncd -A -o /bin/"$line" -j DEWR"
echo $rt
done < test.txt
还有,lz如果不知道,可以使用 sh -x test.sh 查看具体的过程(一般调试shell用-x)
[解决办法]
用单引号试一下
[解决办法]
我用的CentOS5.3测试的 应该和你的环境很接近啊 只不过你的是64位的
你是把你的代码直接复制上来的么
我就奇怪输出怎么后面跑前面去了
[解决办法]
改成这样试试
#!/bin/shwhile read linedo echo "iosncd -A -o /bin/${line} -j DEWR"done < test.txt
[解决办法]
你sh -x test.sh之后的结果 明显是不对的
我有点怀疑你执行的程序跟你给的是一样的么?
#!/bin/shwhile read linedo rt='iosncd -A -o /bin/'"${line}"' -j DEWR' echo "${rt}"done < test.txt