我有一个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
,依此类推。
这适用于您的版本,顺便说一句: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 shell 也不是 C。