[20201109]here-doc(EOF) in bash.txt
[20201109]here-doc(EOF) in bash.txt
--//在bash shell使用her-doc個人習慣使用EPF作為結束符,自己工作中經常犯一些小錯誤,做一些例子:
1.方法一:
sqlplus -s -l scott/book <<EOF
select * from dept;
quit
EOF
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
--//這是最常用的方式,這樣的方式最大問題就是最後EOF必須頂到頭,前面不能有tab或者空格。
2.方法二:
sqlplus -s -l scott/book <<-EOF
select * from dept;
quit
EOF
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO:
40 OPERATIONS BOSTON
--//如果結束EOF前面有空格,前面必須使用-EOF.
--//並且如果手工輸入命令,它不會自動執行,必須在結尾加入ctrl+D,例子:
$ sqlplus -s -l scott/book <<-EOF
> select count(*) from dept;
> quit
> EOF
>
>
COUNT(*)
----------
4
--//結尾EOF輸入不會執行,必須按ctrl+D,不建議採用這樣的書寫模式。並且結束前最好加入quit退出命令對於sqlplus。
sqlplus -s -l scott/book <<-EOF
select * from dept;
EOF
$ sqlplus -s -l scott/book <<-EOF
> select * from dept;
> EOF
>
>
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SP2-0042: unknown command "EOF" - rest of line ignored.
--//報SP2-0042錯誤。
sqlplus -s -l scott/book <<-EOF
select * from dept;
EOF
$ sqlplus -s -l scott/book <<-EOF
> select * from dept;
> EOF
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
--//不會報錯。
3.方法3:
--//轉義問題:
sqlplus -s scott/book <<EOF
$(seq 1 3| xargs -i{} echo select sysdate from dual \; )
quit
EOF
--//分號必須轉義。
$ sqlplus -s -l scott/book <<EOF
> set numw 12
> select current_scn from v$database ;
> EOF
select current_scn from v
*
ERROR at line 1:
ORA-04044: procedure, function, package, or type is not allowed here
--//$database被當作變數。給EOF加入引號就可以避免這個錯誤,不然也要使用\轉義.
$ sqlplus -s -l scott/book << 'EOF'
> set numw 12
> select current_scn from v$database ;
> quit
> EOF
CURRENT_SCN
------------
13304164054
$ sqlplus -s -l scott/book << EOF
> set numw 12
> select current_scn from v\$database ;
> quit
> EOF
CURRENT_SCN
------------
13304164077
4.總結:
--//實際上這些都是一些很細節的問題,工作中有時候遇到。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2732891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell中 << EOF 和 EOF 使用
- [20210908]Reverse Shell with Bash.txt
- 圖片壓縮20201109
- JAVA每日一題20201109Java每日一題
- scanf與EOF
- [20201109]cluvfy comp scan [-verbose].txt
- Linux shell指令碼中內聯輸入 <<- EOF和 <<EOF的區別Linux指令碼
- [20201109]bash shell特殊算術方式.txt
- cat > file << EOF 與 cat > file << -
- c語言中的getchar()和EOFC語言
- javax.mail.MessagingException:[EOF] 解決方法JavaAIException
- 解決問題:OSError: Unable to open file (truncated file: eof = 22118400, sblock->base_addr = 0, stored_eofErrorBloC
- [20201109]11.2.0.4增加欄位與預設值問題.txt
- Go:錯誤 could not launch process: EOF 解決Go
- 論時間與!=EOF的絕對關聯
- Linux中EOF自定義終止符介紹Linux
- io.EOF設計的缺陷和改進
- 【心得】Ctrl+Z、 、 、eof的區別和用法
- 處理OGG-02198 Incompatible record (logical EOF) in trail fileAI
- EOF 如何防止多行寫入檔案變數替換變數
- Go 執行 程式 test.go:1:1: expected ‘package‘, found ‘EOF‘GoPackage
- tree-sitter編寫parser,用external scanner實現eof規則
- Kubeadm安裝k8s叢集升級100年證書時報錯:Unable to connect to the server: EOF:求解決方法.K8SServer
- 昔日埋雷不經意,今朝踩雷排查難:JetBrains系列IDE使用SFTP連線遠端伺服器報“EOF while reading packet”解決方法AIIDEFTP伺服器While