Comment detail

条件を満たす行を取り除く (Nested Flatten)
シェルスクリプトで頑張ろうと思ったけど、入力で先頭の空白を無視しない方法が分からなくて断念。

read LINE
で
 # don't
を入力すると
LINEに"# don't"と入るみたい。

可能だったら、
echo $LINE | grep -v "^#"みたいにしたかった。
1
grep -v "^#"
read は引数を指定しない場合、末尾の改行文字のみを削除します。 「先頭の空白」が無視されるのは、 引数の渡し方によるのではないでしょうか。 単語分割のさいに空白は、なくなります。 echo ”$LINE” のように、クォートしてみてください。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#! /bin/bash
function echo_if_not_comment(){
    [ "${1:0:1}" != '#' ] && echo -n "$1"
}
while read -r; do
    if [ -z "$REPLY" ]; then
        echo
    else 
        echo_if_not_comment "$REPLY"$'\n'
    fi
done
echo_if_not_comment "$REPLY"
上の投稿は、 http://ja.doukaku.org/comment/758/ へのコメントとして書いたつもりだったのですが、独立した投稿になってしまったようですね。失礼しました。
修正しました
アドバイスありがとうございます。
問題は
 read LINE
とやっていた事みたいです。
1
2
3
4
5
6
7
8
9
#!/bin/bash

# 失敗したパターン
# read LINE
# echo "$LINE" | grep -v "^#"

while read -r; do
    echo "$REPLY" | grep -v "^#"
done

Index

Feed

Other

Link

Pathtraq

loading...