知乎专栏 |
cat <<End-of-message 8 ------------------------------------- 9 This is line 1 of the message. 10 This is line 2 of the message. 11 This is line 3 of the message. 12 This is line 4 of the message. 13 This is the last line of the message. 14 ------------------------------------- End-of-message
MYSQL=mysql MYSQLOPTS="-h $zs_host -u $zs_user -p$zs_pass $zs_db" $MYSQL $MYSQLOPTS <<SQL SELECT category.cat_id AS cat_id , category.cat_name AS cat_name , category.cat_desc AS cat_desc , category.parent_id AS parent_id , category.sort_order AS sort_order , category.measure_unit AS measure_unit , category.style AS style , category.is_show AS is_show , category.grade AS grade FROM category SQL
<<-LimitString可以抑制输出时前边的tab(不是空格). 这可以增加一个脚本的可读性.
cat <<-ENDOFMESSAGE This is line 1 of the message. This is line 2 of the message. This is line 3 of the message. This is line 4 of the message. This is the last line of the message. ENDOFMESSAGE
关闭参数替换
NAME="John Doe" RESPONDENT="the author of this fine script" cat <<'Endofmessage' Hello, there, $NAME. Greetings to you, $NAME, from $RESPONDENT. Endofmessage
NAME="John Doe" RESPONDENT="the author of this fine script" cat <<\Endofmessage Hello, there, $NAME. Greetings to you, $NAME, from $RESPONDENT. Endofmessage
your_shell 2>&1
错误输出演示
[root@localhost ~]# id ethereum id: ethereum: no such user # 这里可以看到错误输出 id: ethereum: no such user [root@localhost ~]# id ethereum > test id: ethereum: no such user 我们尝试将他重定向到文件 test,但是结果仍是输出 id: ethereum: no such user [root@localhost ~]# cat test [root@localhost ~]# 查看 test 文件,内容空。
继续做实验
[root@localhost ~]# id ethereum > test 2>&1 [root@localhost ~]# cat test id: ethereum: no such user
测试实验结果成功了,将错误输出转到标准输出,然后写入文件。
echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward;
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://du8c1in9.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
cat << EOF > foo.sh printf "%s was here" "$name" EOF cat >> foo.sh <<EOF printf "%s was here" "$name" EOF