net_connect="@oradb"
所以我試圖存儲在另一個環境變量值,而不@字符的環境
所以這樣做似乎工作:
echo "test=" $net_connect | cut -d "@" -f2
test=oradb
現在,如果我這樣做我得到:
SID=`$net_connect | cut -d "@" -f2`
echo "SID=" $SID
SID=
爲什麼我的輸出空白?
net_connect="@oradb"
所以我試圖存儲在另一個環境變量值,而不@字符的環境
所以這樣做似乎工作:
echo "test=" $net_connect | cut -d "@" -f2
test=oradb
現在,如果我這樣做我得到:
SID=`$net_connect | cut -d "@" -f2`
echo "SID=" $SID
SID=
爲什麼我的輸出空白?
要卸下@
,使用前綴移除:
$ net_connect="@oradb"
$ sid="${net_connect#@}"
$ echo "$sid"
oradb
注:
一般而言,${variable#prefix}
從variable
除去水珠prefix
。欲瞭解更多信息,請打開man bash
並在Remove matching prefix pattern
上搜索
在shell中,最好的做法是用混合或小寫來命名變量。如果您使用大寫變量名稱,那麼您最終會錯誤地覆蓋系統變量之一,結果將會令人不快。
下面的命令不會做你希望是什麼:
SID=`$net_connect | cut -d "@" -f2`
它運行命令併發送標準輸出到cut
。但是,有可能是沒有這樣的命令shell將發出一個錯誤,例如:因爲你在執行
sid=$(echo "$net_connect" | cut -d "@" -f2) # This works but prefix removal is simpler
:
bash: @oradb: command not found
如果你真的想使用cut
,然後的變量,而不是附和它:
$net_connect | etc...
歸結到
@oradb | etc...
這是一個語法錯誤。您沒有名爲@oradb
的命令/二進制文件。
也許你想
SID=`echo $net_connect | cut -d "@" -f2`
代替。
你的第一行關聯這樣的命令:PIPE'echo test = $ net_connect' STDOUT INTO'cut -d @ -f2' STDIN。我不知道它是如何在你的shell中工作的。礦井返回'oradb' – Pandaiolo