百思不得起解, Linux shell 问题一则

2019-06-11 20:10:02 +08:00
 weizhen199

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

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


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

$SqluldrDir USER=$USERNAME/$PASSWORD@$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 行不行

3383 次点击
所在节点    Linux
7 条回复
Gcourage
2019-06-11 23:55:42 +08:00
shell 里面的$1 也应该转义下
这个不然容易解释成第一个参数
rrfeng
2019-06-12 00:24:07 +08:00
sh -x 执行就看到为啥了
ps1aniuge
2019-06-12 13:47:41 +08:00
我用 echo 出来的语句直接运行就 ok。
直接放在 shell 里跑就毫无反应。
---------试试 linux 版 powershell。
$SqluldrDir='xxx' #原来的变量不变,只是 powershell 语法定义变量时也要加$



$a =
@"
$SqluldrDir USER=$USERNAME/$PASSWORD@$SERVER query="select * from $1;" field= charset=ZHS16GBK FILE=$Dir/$1.bcp log=$Dir/RUN_LOG/$1_out.log
"@
echo $a #输出变量替换结果
Invoke-Expression $a
ps1aniuge
2019-06-13 14:58:29 +08:00
看了楼主附言,大家可知,这个白大夫这病,又倍潘大夫治好了。
james122333
2019-06-14 09:47:01 +08:00
不明所以的问题 hahaha 写 shell 必须遵从基本法阿
weizhen199
2019-06-14 10:51:18 +08:00
@james122333 这个问题到不出在违反 shell 的基本法上
这是 oracle 修正案让 shell 基本法的判决产生了极大的阻碍
/doge
james122333
2019-06-14 14:12:55 +08:00
@weizhen199 主要是你讲的比较杂乱 不明白是什么意思 我刚好也没 oracle 可以测

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX