我想寫一個簡單的函數來查找在Bash中輸入字符串所有新行,這就是我想出了:讀取輸入字符一個字符似乎跳過換行符
find_newlines() {
while IFS= read -r -n 1 c; do
if [[ "$c" == $'\n' ]]; then
echo 'FOUND NEWLINE'
fi
done
}
我以爲我做了我需要的一切。我將IFS
設置爲空,我通過了-r
標誌,並且我迫使read
每次只讀一個字符-n 1
。然而,令我沮喪的是,下面什麼也沒做:
test_data="this is a
test"
printf "$test_data" | find_newlines
我沒有收到任何輸出。我正在Mac OS X下進行測試,並且我在Bash版本3.2.57(Apple提供的一個)和4.3.33(通過Homebrew安裝)上運行了此操作。兩者都給出了相同的結果。
爲了在循環中包含換行符,我需要做些什麼?
用'set -vx'(函數內部)打開調試。不能保證解決你的問題,但它可能會給你一些見解。有趣的問題。祝你好運。 – shellter