sed
ASCII 1を次に置き換えるコマンドラインがあります|
。
sed -e 's/^A/\|/g' file_name
これはうまくいきます。しかし、bashファイルの関数に入れると、次のようになります。
func(){
sed -e 's/^A/\|/g'
}
動作しません:
func file_name
ファイルを表示する代わりに停止します。
私は間違えましたか?私のbashが確実にロードされるように新しいターミナルを開きました。
答え1
これを入力パラメータとして扱う必要がありますfile_name
。関数のコマンドに魔法のように当てはまるわけではありません。
func() {
sed -e 's/^A/\|/g' "$1"
}
渡された最初のパラメータはに格納され$1
、2番目のパラメータはに格納される$2
式です。
これはあなたのバージョンで動作します。 btw:func < file_name
答え2
実際にはかかりません。入力を待ちます:-)
あなたがこれをするか
func() # replace something in the file, i.e. modify it
{
sed -e 's/^A/\|/g' -i "$1"
}
またはこれ
func() # output the contents of the file to console after applying sed
{
sed -e 's/^A/\|/g' < "$1"
}
また、bash/POSIX シェルは C ではありません。