簡體   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