我遇到了以下问题:我正在编写一个Linux bash脚本,它执行以下操作:
- 从文件中读取行
- 删除刚刚读取的行末尾的
\n
字符 - 执行该行中的命令
例如: commands.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
在向SO提问之前,我已经尝试过一些方法。有解决方案吗?我已经为此苦思冥想了几个小时...
$line
? - knittlmyline="$(echo -n "$line)")"
(如果您想要,可以使用反引号而不是$()
)。 - We Are All Monica