[20210906]沒有想到bash shell還可以這樣寫.txt

lfree發表於2021-09-07

[20210906]沒有想到bash shell還可以這樣寫.txt

--//昨天看指令碼,我發現裡面一些細節,透過例子說明.

$ echo "x /rncc dba 11,133 *kdbr[0]" | rlbbed
BBED: Release 2.0.0.0.0 - Limited Production on Mon Sep 6 21:20:36 2021
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************

BBED> set count 8192
        COUNT           8192

BBED> set width 300
        WIDTH           300

BBED> rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x01
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK
BBED>

--//編輯測試指令碼如下test1.sh
#! /bin/bash
NUMROWS1=$(rlbbed <<EOF|
p dba 11,133  kdbh.kdbhnrow
EOF

grep kdbhnrow |awk  '{print $5}')
echo $NUMROWS1

NUMROWS2=$(rlbbed <<EOF|grep kdbhnrow |awk  '{print $5}'
p dba 11,133  kdbh.kdbhnrow
EOF
)
echo $NUMROWS2

NUMROWS4=$( echo p  dba 11,133  kdbh.kdbhnrow | rlbbed | grep kdbhnrow |awk  '{print $5}')
echo $NUMROWS4

rlbbed <<EOF|
p dba 11,133  kdbh.kdbhnrow
EOF

grep kdbhnrow

--//第一種寫法好奇怪,中間還空了一行,居然執行也是正確的.
--//一般我喜歡使用EOF喜歡第2種寫法.
--//我最後特意測試不使用括號賦值的方式,居然也可以執行成功!!這樣的語法非常容易產生歧義性,特別指grep 單獨一行.
--//執行結果如下:

$ ./test1.sh
4
4
4
BBED> b2 kdbhnrow                                 @102      4



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2790710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章