我有shell脚本,它生成基于文本文件中的值的SQL查询。我的文本文件的值如下(逐行)
我的shell脚本是这样的。
#!/bin/sh
NAME="tableNames.txt"
COLUMNA="ca"
COLUMNB="cb"
cat $NAME | while read LINE
do
echo "CREATE TABLE \"$LINE\" (
forward_speed double precision,
backward_speed double precision
);"
done
LINE变量从文本文件中正确获取值,但它有换行符,我如何删除换行符。
4条答案
按热度按时间b5buobof1#
您可能是在windows机器上或其他设置中使用dos行结束符生成文本文件的。你可以通过以下两种方法来解决
cat $FILE | tr -d '\r' | while read LINE ...
cat $FILE | awk '{print $1}' | while read LINE ...
gk7wooem2#
如果
tabeNames.txt
来自Windows,则应执行dos2unix过滤器。rfbsl7qr3#
我在Fedora上处理Busybox docker容器的输出时遇到了这个问题。
我正在使用docker run的输出来做进一步的处理,但几个小时都无法让它工作。
我通过将输出通过管道传输到一个文件来解决我的问题
希望这能帮助其他人解决类似的容器输出问题
okxuctiv4#
一个快速而又简单的方法是在read命令的末尾添加一个“junk”变量。如果在行尾有隐藏,它将被存储在垃圾变量中,而不是在它之前的变量的末尾;如果没有,垃圾变量将被设置为空字符串。
示例:
将从来源不确定的文件中读取3个空格分隔的列中的值,而不会有将a附加到第三个变量的风险。