V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
weizhen199
V2EX  ›  Linux

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

  •  
  •   weizhen199 · 2019-06-11 20:10:02 +08:00 · 3316 次点击
    这是一个创建于 1773 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天改了 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 行不行

    第 1 条附言  ·  2019-06-12 14:35:43 +08:00
    破案了
    手打命令这个双引号就要转移 /"/"
    放在文本里给变量赋值里就=""就可以了, 打了转义符反而不行
    7 条回复    2019-06-14 14:12:55 +08:00
    Gcourage
        1
    Gcourage  
       2019-06-11 23:55:42 +08:00 via iPhone   ❤️ 1
    shell 里面的$1 也应该转义下
    这个不然容易解释成第一个参数
    rrfeng
        2
    rrfeng  
       2019-06-12 00:24:07 +08:00 via Android   ❤️ 1
    sh -x 执行就看到为啥了
    ps1aniuge
        3
    ps1aniuge  
       2019-06-12 13:47:41 +08:00   ❤️ 1
    我用 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
        4
    ps1aniuge  
       2019-06-13 14:58:29 +08:00
    看了楼主附言,大家可知,这个白大夫这病,又倍潘大夫治好了。
    james122333
        5
    james122333  
       2019-06-14 09:47:01 +08:00
    不明所以的问题 hahaha 写 shell 必须遵从基本法阿
    weizhen199
        6
    weizhen199  
    OP
       2019-06-14 10:51:18 +08:00
    @james122333 这个问题到不出在违反 shell 的基本法上
    这是 oracle 修正案让 shell 基本法的判决产生了极大的阻碍
    /doge
    james122333
        7
    james122333  
       2019-06-14 14:12:55 +08:00
    @weizhen199 主要是你讲的比较杂乱 不明白是什么意思 我刚好也没 oracle 可以测
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1381 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:47 · PVG 07:47 · LAX 16:47 · JFK 19:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.