繁体   English   中英

bash 中的简单“printf”被搞砸了输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM