我可以用两个引号替换单引号。 但我还需要检查一个值是否为空。
以下代码返回: 它是:找不到命令
original="it's smth"
modified=${original:-NULL}
$modified=${modified//\'/\'\'}
echo "$modified"
有什么问题?
答案 0 :(得分:0)
在第三行中,删除前导$
。
答案 1 :(得分:0)
bash正在阅读你的命令:
original="it's smth"
bash收到一个名为original
的变量,一切都很好
modified=${original:-NULL}
bash接收名为modified
的第二个变量,默认为第一个变量。
$modified=${modified//\'/\'\'}
bash被告知要处理/运行某些内容,因为该行以$modified
开头,因为$
。将前一个字符串作为现在的命令,它会立即被卡住,因为在其已知命令中确实找不到该命令it's
的第一部分。
echo "$modified"
只返回没有错误,因为此处 - echo
之后 - $
是对第二行的引用,告诉bash重现名为' modified&的变量#39;这等于原来的'。输出为it's smth