【问题标题】:unix ksh assign two values to a variableunix ksh 将两个值分配给一个变量
【发布时间】:2011-08-08 02:39:24
【问题描述】:

#!ksh 我想做一些奇怪的事情,但 unix 不让我...... 请看示例:

#assign multiple values to a variable so if the user type 
#upper case or lower case it will be ok

var=aa1|AA1|aA1  

#then I want to use the variable in a guess script

我需要在其他函数中使用该变量,所以我不能用例 任何人都可以帮忙吗? 谢谢。

【问题讨论】:

    标签: shell unix variables ksh


    【解决方案1】:

    该 | character 是一个管道,在 KSH 中有特殊的含义。

    将整个字符串用单引号括起来就可以了。

    var='aa1|AA1|aA1'

    虽然如果你稍后要与 egrep 之类的东西进行比较,你可以只传递它'-i',它会变得不区分大小写,或者接受用户的输入并通过 'tr' 来强制它全部大写或小写所以你知道它会是什么。

    给猫剥皮的许多简单方法。

    【讨论】:

    • 它仍然不起作用,我正在做一个猜测脚本,我想说如果 [ $variable2 != $var ],但是正如你写的那样,如果我写 aa1,variable2 只会等于 var |AA1|aA1,但我只需要键入这 3 个中的一个。:-)。至少我的测试是这样的......
    【解决方案2】:

    在提示用户输入值之前,您可能希望将变量声明为小写:

    $ typeset -l x
    $ read x
    HELLO WORLD
    $ echo "$x"
    hello world
    

    与您正在做的事情相匹配的另一个场景:

    $ answer="hello world"
    $ typeset -l response
    $ read response
    HELLO WORLD
    $ if [ "$answer" = "$response" ]; then echo "Correct!"; fi
    Correct!
    

    【讨论】:

    • 感谢您的回答,但我仍然不明白如何在我的脚本中使用它。我可以说 typeset -l answer=Hello World 吗?我没有从输入中获取变量的值,它意味着被设置以便我可以用来测试我的猜测脚本。
    • 我其实是用变量来比较是否等于用户输入的,但是变量是不变的。我以前从未使用过排版,这就是我不明白的原因。对不起,伙计,再次感谢。
    • 对不起,我的垃圾,我现在了解排版,我设法在我的脚本上实现它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多