将hash-sign-starting-string参数传递给shell脚本

时间:2018-03-15 14:23:13

标签: linux shell parameters scripting ksh

我尝试将包含在两个#符号之间的字符串传递给ksh脚本:

Will #> ./a.ksh #This is a string#

Will #>

没有提示,execpeted输出将是:

Will #> ./a.ksh #This is a string#
#This is a string#

a.ksh脚本下方。

a.ksh

echo $1
echo "$1"
echo ${1}
echo "${1}"
  

我试图用我知道的任何方式来保护我的$1变量,但是我   无法显示以#开头的任何内容。

那些无法工作的人:

#> ./a.ksh #Hello
#> ./a.ksh #

但这样做:

#> ./a.ksh Hello#

任何shell大师都可以解释我为什么以及如何让这个工作成功解决?

我可以使用\#This String#"#This String#"来逃避这些字符串,但我想知道为什么#不能单独打印。

1 个答案:

答案 0 :(得分:1)

#被解释为评论的开头。解释器会忽略所有注释。

您有两种选择:

  1. 引用字符串使其成为文字:

    ./a.ksh "#This is a string#"

  2. 让您的脚本读取用户的输入而不是参数:

  3. 以下是一个例子:

    #!/bin/ksh
    echo "Enter your text:"
    read -r input
    echo "You entered: $input"
    

    然后先运行程序,然后输入您的数据:

    $ ./a.ksh
    Enter your text:
    #This is a string#
    You entered: #This is a string#