技术解析

百思不得起解, Linux shell 问题一则
0
2021-06-21 09:15:07
idczone

今天改了 oracle 的密码带了一个 @得麻烦点,用 shell 里得写成\"pwd\",

下面是个用 sqluldr 导出表的 shell 脚本


echo "$SqluldrDir USER=$USERNAME/[email protected]$SERVER query=\"select * from $1;\" field=  charset=ZHS16GBK FILE=$Dir/$1.bcp log=$Dir/RUN_LOG/$1_out.log"

$SqluldrDir USER=$USERNAME/[email protected]$SERVER query="select * from $1;" field=  charset=ZHS16GBK FILE=$Dir/$1.bcp log=$Dir/RUN_LOG/$1_out.log

我用 echo 出来的语句直接运行就 return 0 pass 直接放在 shell 里跑就毫无反应 return 1 failed

莫名,现在正准备试试 sqlplus 行不行


shell 里面的$1 也应该转义下
这个不然容易解释成第一个参数

sh -x 执行就看到为啥了

我用 echo 出来的语句直接运行就 ok。
直接放在 shell 里跑就毫无反应。
---------试试 linux 版 powershell。
$SqluldrDir='xxx' powershell 语法定义变量时也要加$

$a =
@"
$SqluldrDir USER=$USERNAME/[email&query="select * from $1;" field= charset=ZHS16GBK FILE=$Dir/$1.bcp log=$Dir/RUN_LOG/$1_out.log
"@
echo $a />Invoke-Expression $a

看了楼主附言,大家可知,这个白大夫这病,又倍潘大夫治好了。

不明所以的问题 hahaha 写 shell 必须遵从基本法阿

这个问题到不出在违反 shell 的基本法上
这是 oracle 修正案让 shell 基本法的判决产生了极大的阻碍
/doge

主要是你讲的比较杂乱 不明白是什么意思 我刚好也没 oracle 可以测

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服