首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

一个字符串相关的shell脚本有关问题

2012-03-05 
请教大家一个字符串相关的shell脚本问题#!/bin/shwhile read linedortiosncd -A -o/bin/$line -j DEWR

请教大家一个字符串相关的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"

[解决办法]
你看 这是在我这里的运行结果

C# code
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位的
你是把你的代码直接复制上来的么
我就奇怪输出怎么后面跑前面去了
[解决办法]
改成这样试试
C/C++ code
#!/bin/shwhile read linedo  echo "iosncd -A -o /bin/${line} -j DEWR"done < test.txt
[解决办法]
你sh -x test.sh之后的结果 明显是不对的
我有点怀疑你执行的程序跟你给的是一样的么?
C/C++ code
#!/bin/shwhile read linedo      rt='iosncd -A -o /bin/'"${line}"' -j DEWR'      echo "${rt}"done < test.txt 

热点排行