【发布时间】:2010-11-30 08:43:03
【问题描述】:
我遇到了以下问题:我正在编写一个 Linux bash 脚本,它执行以下操作:
- 从文件中读取行
- 从刚刚读取的行尾去掉
\n字符 - 执行其中的命令
示例: 命令.txt
ls
ls -l
ls -ltra
ps as
bash 文件的执行应该得到第一行,并执行它,但是当\n 存在时,shell 只输出“command not found: ls”
脚本的那部分看起来像这样
read line
if [ -n "$line" ]; then #if not empty line
#myline=`echo -n $line | tr -d '\n'`
#myline=`echo -e $line | sed ':start /^.*$/N;s/\n//g; t start'`
myline=`echo -n $line | tr -d "\n"`
$myline #execute it
cat $fname | tail -n+2 > $fname.txt
mv $fname.txt $fname
fi
评论说你有我在问之前尝试过的东西。有什么解决办法吗?在过去的几个小时里,我一直在为此绞尽脑汁......
【问题讨论】:
-
你有没有单独尝试过
$line? -
我当然做到了。但它说“找不到命令:ls”
-
只需要:
myline="$(echo -n "$line")"(如果你愿意,可以用反引号代替$())