[英]simple 'printf' in bash gets screwed up output
我是这里的新手。 我真的尝试过谷歌搜索但失败了。
我有一个简单的脚本,它逐行读取文件然后打印出来。 “b.txt”的第一行是“02083192846”。
#!/bin/bash
while IFS= read -r line; do
printf 'downloading %s .html\n' $line
done < "$1"
然而,输出被搞砸了:
User@User-pk ~/test
$ ./test.sh b.txt
.htmlading 02083192846
解决此问题后,我的下一个问题是如何将此行用作某些命令将存储到的文件名的一部分。 即文件名应该是“02083192846.html”。 我试过将它设置为 ${line}.html 但它不起作用。 例如grep "foo" -f ${line}.html
不起作用。 但是curl http://foo -o $line.html
仍然有效!
我会怎么做:
#!/bin/bash
while IFS= read -r line; do
printf 'downloading %s .html\n' "${line//$'\r'/}"
# ________
done < "$1"
# ^
# remove \r with bash parameter expansion
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.