我写了如下简单的脚本
#!/bin/bash
auth_type=""
SM_Read-only="Yes"
SM_write-only="No"
echo -e ${SM_Read-only}
echo -e ${SM_Write-only}
if [ "${SM_Read-only}" == "Yes" ] && [ "${SM_Write-only}" == "Yes" ]
then
auth_type="Read Write"
else
auth_type="Read"
fi
echo -e $auth_type
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我得到了错误的输出.
./script.bash: line 5: SM_Read-only=Yes: command not found
./script.bash: line 6: SM_write-only=No: command not found
only
only
Read
Run Code Online (Sandbox Code Playgroud)
任何人都知道用" - "(破折号)声明变量的正确方法吗?
编辑:
从c代码获得响应并评估变量,例如
RESP=`getValue SM_ Read-only ,Write-only 2>${ERR_DEV}`
RC=$?
eval "$RESP"
Run Code Online (Sandbox Code Playgroud)
从上面的脚本代码我的c二进制文件getValue知道脚本想要Read-only和Write-only并返回值到脚本eval $RESP.因为在原因错误和我的脚本中我访问变量
echo -e ${SM_Read-only}
echo -e ${SM_Write-only}
Run Code Online (Sandbox Code Playgroud)
这也会导致错误.
重命名变量名称,如下所示:
SM_Read_only="Yes"
SM_write_only="No"
Run Code Online (Sandbox Code Playgroud)
请不要-在bash中使用变量名中的减号,请参考答案,了解如何在bash中设置正确的变量名.
但是,如果根据其他输出生成代码,则只需使用sed处理其输出:
RESP=$(getValue SM_ Read-rule,Write-rule 2>${ERR_DEV}|sed "s/-/_/")
RC=$?
eval "$RESP"
Run Code Online (Sandbox Code Playgroud)