我尝试将包含在两个#
符号之间的字符串传递给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#"
来逃避这些字符串,但我想知道为什么#
不能单独打印。
答案 0 :(得分:1)
#
被解释为评论的开头。解释器会忽略所有注释。
您有两种选择:
引用字符串使其成为文字:
./a.ksh "#This is a string#"
让您的脚本读取用户的输入而不是参数:
以下是一个例子:
#!/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#