提问人:Kay 提问时间:4/6/2022 最后编辑:Kay 更新时间:4/6/2022 访问量:1395
如何在 CAT << EOF >中读取文件
How can I read a file in cat << EOF >
问:
我想在 << EOF> 中打印一个文件。例如:
$cat file
ad3
c43
34e
se3
we3
我的脚本是:
$cat run.sh
cat << EOF > test.sh
#!/bin/bash
some commands
cat file #I would like to print the content of the file here
some commands
EOF
我无法随心所欲地打印./run.sh
欲望输出
$cat test.sh
#!/bin/bash
some commands
ad3
c43
34e
se3
we3
some commands
答:
1赞
Exciter
4/6/2022
#1
我想你正在寻找这样的东西?
cat > test.sh <<EOF
#!/bin/bash
some commands
ad3
c43
34e
se3
we3
some commands
EOF
2赞
wildplasser
4/6/2022
#2
您可以使用反引号,或将文件写入块:
#!/bin/bash
cat <<OMG >zfile
ad3
c43
34e
se3
we3
OMG
# Method1 : backticks
cat << EOF > test.sh
#!/bin/bash
some commands1
`cat zfile`
some commands2
EOF
# Method2: append
cat << EOF1 > test2.sh
#!/bin/bash
some commands1
EOF1
cat zfile >> test2.sh
cat << EOF2 >> test2.sh
some commands2
EOF2
评论
0赞
Kay
4/6/2022
非常好。。我使用方法 2,看起来很手动......但是寻找像方法 1 这样的方法......谢谢
1赞
chepner
4/6/2022
推荐反引号是没有意义的;它们已经过时,只需要在旧的遗留代码中被识别,而不需要在新代码中使用。
1赞
chepner
4/6/2022
请改用。$(...)
0赞
wildplasser
4/6/2022
反引号并没有过时,它们是 bash 仍然支持的 Bourne shell 功能。
2赞
chepner
4/6/2022
“过时”并不意味着“不受支持”。
3赞
Mark Setchell
4/6/2022
#3
您可以使用复合命令:
{ cat << EOF ; cat file ; cat << EOF2; } > test.sh
> start
> EOF
> more
> EOF2
这样可以得到:
start
ad3
c43
34e
se3
we3
more
评论